存储来自复选框集合的用户首选项

时间:2012-04-12 04:37:08

标签: ruby-on-rails preferences

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

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

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

那我该怎么办呢?

1 个答案:

答案 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

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