我有如下所示的模型。我需要存储一些特定于一个人和一个房子的细节(first_viewed:date,open offer:decimal等)。我觉得这些应该属于PersonHouse模型,但我不够确定。有什么建议?
class Person < ActiveRecord::Base
has_many :houses, through: :person_houses
has_one :favorite_house, through: :person_houses
end
class PersonHouse < ActiveRecord::Base
belongs_to :house
belongs_to :person
end
class House < ActiveRecord::Base
has_many :house_people
has_many :people, through: :person_houses
end
我可以做这样的事情来获取所有细节,但也许有一种更有效的方法。
@house = House.find(1)
@house.house_people.each do |hp|
puts hp.person.name
puts hp.first_viewed
puts @house.address
end
答案 0 :(得分:1)
我认为你的假设是正确的。如果数据与人与房屋之间的关系相关,那么它属于该模型。我要做的唯一建议是将此模型重命名为更好地描述关系的名称。它不一定是它加入的两个模型的串联。我不确切知道该模型最终会用于什么,但是SelectedHouse,HouseProspect或其他类似的东西可能会起作用。
您还可以将房产委托给房屋或个人模型:
class PersonHouse < AR::Base
belongs_to :person
belongs_to :house
delegate :address, :to => :house, :prefix => true
delegate :name, :to => :person, :prefix => true
end
person_house.address
person_house.person_name