在 rails 中使用 has_one 嵌套属性是个好主意吗?
Is it a good idea to use has_one nested attributes in rails?
假设我有 3 个模型; 酒店、度假村和餐厅。
每个模型都有相似的属性; 标题、描述、设施...等等...
如果我希望每个模型都有一个带有属性的位置; 国家、省、市、地址、纬度和经度。
我应该创建位置模型并使用 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
希望对您有所帮助。
假设我有 3 个模型; 酒店、度假村和餐厅。 每个模型都有相似的属性; 标题、描述、设施...等等...
如果我希望每个模型都有一个带有属性的位置; 国家、省、市、地址、纬度和经度。
我应该创建位置模型并使用 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
希望对您有所帮助。