我有以下场景,我不确定是否应该使用类继承或单表继承:
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
和{{1到regular_list_id
对象/类。这看起来很麻烦。我可以这样做:
Word
然后像:
Class MainList
has_many :words, :foreign_key => list_id
end
?
唯一的问题是有人可以命名@user.main_list.find_by_name("MainList")
“MainList”。
答案 0 :(得分:1)
你可以这样做:
Class User < ActiveRecord::Base
has_many :lists
end
Class List < ActiveRecord::Base
belongs_to :user
has_and_belongs_to_many :words
end
Class Word < ActiveRecord::Base
has_and_belongs_to_many :lists
end
在列表类中,您可以添加两个布尔字段来列出;一个用于main_list,另一个用于known_list。在该类上,您还可以添加验证以确保每个用户只有一个主列表和一个已知列表。要为用户选择主列表,您可以执行以下操作:
@user.lists.find(:first, :conditions => {:main_list => true})