我有一组名称复选框,用户可以选择多个名称。
我想在下次登录时保存用户选择。
但是,随着时间的推移,某些名称可能会被删除,而新名称可能会被添加。添加的名称可以保持未选中状态,但我不想继续存储已删除名称的ID。
那我该怎么办呢?
答案 0 :(得分:0)
我会为您的选项创建一个表,然后有一个连接表来记录选中的选项
然后你可以添加:dependent => :破坏选项方面的关系。这将删除选项时删除连接表中的记录。
以下是多对多的示例:
def User < ActiveRecord::Base
has_many :preferences, :dependent=>:destroy
has_many :options, :through=>:preferences
end
def Preferences < ActiveRecord::Base
belongs_to :user
belongs_to :option
end
def Option < ActiveRecord::Base
has_many :preferences, :dependent=>:destroy
has_many :users, :through=>:preferences
end
如果需要,可以为不同类型的选项创建多个连接表。比如说背景颜色你需要一个连接,它允许你也存储关联的颜色,或者你可能需要为页面上的文章存储一个整数,这可能是另一个模型。或者,您可以在连接表时添加单个字符串值,并将关联数据存储为字符串,并仅使用该字符串。