【发布时间】:2015-10-28 00:51:40
【问题描述】:
假设我正在创建一个产品目录,我希望能够在其中动态创建产品属性。我定义的数据模型如下所示:
class Collection < ActiveRecord::Base
has_many :items
has_many :item_attributes
end
class Item < ActiveRecord::Base
belongs_to :collection
has_many :item_attribute_values
end
class ItemAttribute < ActiveRecord::Base
belongs_to :collection
has_many :item_attribute_values
end
class ItemAttributeValue < ActiveRecord::Base
belongs_to :item_attribute
belongs_to :item
end
它旨在支持的用例是可以存在各种集合的用例,每个集合都有自己的项目。用户可以为每个集合创建自定义属性。然后,用户为集合中的每个项目填充自定义属性。
一个例子: 对于漫画书合集,将被跟踪的属性是Author和Inker。项目“蝙蝠侠 #1”的属性值表中将包含“Bob Kane”和“John Doe”。项目“蜘蛛侠 #1”的属性值表中将包含“Stan Lee”和“Jane Doe”。
对于汽车的集合,将被跟踪的属性是Year和Mileage。项目“Honda Civic”,在属性值表等中会有“2013”和“55000 Doe”等
如果我想列出与网页上特定项目关联的所有属性键、值对,从数据库中检索它们的最佳和最有效的方法是什么?是否有更好的数据模型来支持此功能?
【问题讨论】:
标签: ruby-on-rails activerecord