【发布时间】:2010-08-14 17:54:13
【问题描述】:
我有一些独特的情况,如果我有一个带有每个州的复选框的表单(如美国各州,所以 50 个州说),我真的不想在我的数据库中添加 50 列,怎么能我将它们存储在单个列中的数组中?
我觉得我已经完成了这项工作,但我很难将手指放在实施上。
【问题讨论】:
-
您可以使用
states * ';'和states.split ';',并确保states中不出现分号。
我有一些独特的情况,如果我有一个带有每个州的复选框的表单(如美国各州,所以 50 个州说),我真的不想在我的数据库中添加 50 列,怎么能我将它们存储在单个列中的数组中?
我觉得我已经完成了这项工作,但我很难将手指放在实施上。
【问题讨论】:
states * ';' 和states.split ';',并确保states 中不出现分号。
ActiveRecord::Base.serialize。直接来自 rails 文档:
class User < ActiveRecord::Base
serialize :preferences
end
user = User.create(:preferences => { "background" => "black", "display" => large })
User.find(user.id).preferences # => { "background" => "black", "display" => large }
【讨论】:
您也可以在用户和状态之间建立一个包含多对多关系的状态表。这将使查询更有效率。
【讨论】: