Ruby on rails 在rails中使用has_one嵌套属性是一个好主意吗?

Ruby on rails 在rails中使用has_one嵌套属性是一个好主意吗?,ruby-on-rails,nested-attributes,has-one,Ruby On Rails,Nested Attributes,Has One,假设我有3个模型酒店、度假村和餐厅。 每个模型具有相似的属性标题、描述、设施等… 如果我希望每个模型都有一个带有属性的位置国家、省、市、地址、纬度和经度。 我应该创建位置模型并使用has_one嵌套属性,还是应该将位置的属性包含到这些模型中? 哪个方法更可取或更好?我认为您需要使用多态关联,因为您需要在模型上属于多个模型。您可以这样使用它: 编辑:将归属\u更改为:地址更改为归属\u更改为:可定位,如@vee所更正 class Location < ActiveRecord::Base

假设我有3个模型酒店、度假村和餐厅。 每个模型具有相似的属性标题、描述、设施等…

如果我希望每个模型都有一个带有属性的位置国家、省、市、地址、纬度和经度。

我应该创建位置模型并使用has_one嵌套属性,还是应该将位置的属性包含到这些模型中?
哪个方法更可取或更好?

我认为您需要使用多态关联,因为您需要在模型上属于多个模型。您可以这样使用它:

编辑:将
归属\u更改为:地址
更改为
归属\u更改为:可定位
,如@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
类位置
更多详情:


希望这能有所帮助。

建议遵循以下命名惯例并更新
所属
:locatable
酒店
度假村
餐厅
有一个
有一个:位置,as::locatable
。非常感谢您的回答,我以前从未遇到过多态关联。我想这是解决你问题的最好办法。它也不会导致其他关联中可能发生的任何冗余。