我有一组用户可以选择多个名称的复选框。
我想在下次登录时保存用户选择。
但是,随着时间的推移,一些名称可能会被删除,而新名称可能会被添加。添加的名称可以保持未选中状态,但我不想继续存储已删除名称的 ID。
那么我该怎么做呢?
我有一组用户可以选择多个名称的复选框。
我想在下次登录时保存用户选择。
但是,随着时间的推移,一些名称可能会被删除,而新名称可能会被添加。添加的名称可以保持未选中状态,但我不想继续存储已删除名称的 ID。
那么我该怎么做呢?
我会为您的选项创建一个表,然后有一个记录选中选项的连接表
然后你可以添加 :dependent => :destroy 到选项侧的关系。删除选项时,这将删除联接表中的记录。
这是一个多对多的例子:
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
如果需要,您可以为不同类型的选项创建多个连接表。说背景颜色,您需要一个连接,允许您还存储颜色与关联,或者可能对于分页,您需要为页面上的文章存储一个整数,这可能是另一种模型。或者,您可以在连接表中添加一个字符串值,并将关联数据存储为字符串并仅使用该字符串。