1
假設我有3個模型; 酒店,度假村和餐廳。 每個模型都有相似的屬性; 標題,描述,設施...等等...在rails中使用has_one嵌套屬性是個好主意嗎?
如果我想每個模型有一個屬性的位置; 國家,省,城市,地址,經度和緯度。
我應該建立選址模型,並使用HAS_ONE嵌套屬性或我應該包括位置的屬性,這些模型? 哪一個更好或更好的方法?
假設我有3個模型; 酒店,度假村和餐廳。 每個模型都有相似的屬性; 標題,描述,設施...等等...在rails中使用has_one嵌套屬性是個好主意嗎?
如果我想每個模型有一個屬性的位置; 國家,省,城市,地址,經度和緯度。
我應該建立選址模型,並使用HAS_ONE嵌套屬性或我應該包括位置的屬性,這些模型? 哪一個更好或更好的方法?
我想你需要使用多態關聯,因爲你需要在模型上屬於多個模型。你可以這樣使用它:
編輯:更改belongs_to :address
爲belongs_to :locatable
@vee糾正它。
class Location < ActiveRecord::Base
belongs_to :locatable, polymorphic: true
end
class Hotel < ActiveRecord::Base
has_one :location, as: :locatable
end
class Resort < ActiveRecord::Base
has_one :location, as: :locatable
end
class Restaurant < ActiveRecord::Base
has_one :location, as: :locatable
end
更多詳細信息:http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
希望這有助於。
建議遵循以下命名約定並將'belongs_to'更新爲':locatable'和'Hotel','Resort'和'Restaurant's'has_one'更改爲'has_one:location,如:: locatable'。 – vee 2015-02-10 01:49:55
非常感謝您的回答,我以前從未遇到過多態關聯。請試試看 – settawut 2015-02-10 06:01:56
是的,這是我認爲對您的問題最好的解決方案。它也不會造成其他協會可能發生的任何冗餘。 – Deep 2015-02-10 06:07:00