1
我有以下情形,我不知道我是否应该使用类继承或单表继承:类继承或单表继承2.3
Class User
has_one :main_list
has_one :known_list
has_many :regular_lists
end
Class List
has_many :words
end
Class Word
belongs_to :list
end
我希望做的是让每个不同的列表类型是不同的类,问题是如果我这样做,我需要将main_list_id
,known_list_id
和regular_list_id
添加到Word
对象/类。这看起来很麻烦。我可以这样做:
Class MainList
has_many :words, :foreign_key => list_id
end
,然后是这样的:
@user.main_list.find_by_name("MainList")
?
唯一的问题是,有人可以命名RegularList
“MainList”。
有趣的想法,但现在做@ user.regular_lists呢?是不是会返回所有列表,包括main_list和known_list?这些布尔字段的索引是否合适? – TenJack 2010-11-14 00:22:20
要找到这些,它会是@ user.lists.find(:first,:conditions => {:main_list => false,:known_list => false})。您还可以通过创建命名范围来简化此操作。不,不建议索引布尔字段...只需索引user_id。 – 2010-11-14 00:32:55
上面的编辑:查询应该是@ user.lists.find(:all,:conditions => {:main_list => false,:known_list => false}),因为有多个常规列表...对不起。 – 2010-11-14 02:57:01