0

我有一组用户可以选择多个名称的复选框。

我想在下次登录时保存用户选择。

但是,随着时间的推移,一些名称可能会被删除,而新名称可能会被添加。添加的名称可以保持未选中状态,但我不想继续存储已删除名称的 ID。

那么我该怎么做呢?

4

1 回答 1

0

我会为您的选项创建一个表,然后有一个记录选中选项的连接表

然后你可以添加 :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

如果需要,您可以为不同类型的选项创建多个连接表。说背景颜色,您需要一个连接,允许您还存储颜色与关联,或者可能对于分页,您需要为页面上的文章存储一个整数,这可能是另一种模型。或者,您可以在连接表中添加一个字符串值,并将关联数据存储为字符串并仅使用该字符串。

于 2012-04-12T05:16:04.850 回答