在 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

希望对您有所帮助。