сразу же хочу извинится за лень, (да, по правильному нужно осилить полностью пару манов и тогда большинство вопросов отпадут самис собой. но времени, как всегда, не хватает, а гугл не колется) прошу понять меня и проститьпомочь, если не сложно.
итак есть следующие модели
Person
class Person < ActiveRecord::Base
has_one :person_role
# TODO: this does not help us
#validates_associated :person_role
belongs_to :property
attr_accessible :name, :notes, :phone, :person_role_id
validates :name, :phone, :presence => true
validates :phone, :length => { :minimum => 5 },
:uniqueness => {:scope => :name},
:numericality => {:only_integer => true}
end
PersonRole
class PersonRole < ActiveRecord::Base
attr_accessible :name
validates :name, :uniqueness => { :case_sensitive => false }
belongs_to :person
end
вроде как они связаны с помощью has_one и belongs_to.
irb(main):031:0> Person.find(1).methods.include?(:person_role)
Person Load (0.4ms) SELECT `people`.* FROM `people` WHERE `people`.`id` = 1 LIMIT 1
=> true
irb(main):032:0>
но обращение к методу person_role кидает трейс.
значит не все так хорошо, и я гдето на косячил.
к чему все это. ах да, не хочется в вьюхе плодить говнокод типа этого
<% @people.each do |person| %>
<tr>
<td><%= person.name %></td>
<td><%= person.phone %></td>
<td><%= t('roles.' +
PersonRole.find(person.person_role_id).name
) %></td>
как сие правильно писать? Хочется правильного, красивого и краткого решения.
да, я видел и joins и includes. но то ли я не въехал как их правильно использовать, то ли.. в обьщем поделитесь примером, или ткните носом в строчку мануала где сие разжовывается