【问题标题】:Storing an array in the database in ruby on rails在 ruby​​ on rails 中将数组存储在数据库中
【发布时间】:2010-08-14 17:54:13
【问题描述】:

我有一些独特的情况,如果我有一个带有每个州的复选框的表单(如美国各州,所以 50 个州说),我真的不想在我的数据库中添加 50 列,怎么能我将它们存储在单个列中的数组中?

我觉得我已经完成了这项工作,但我很难将手指放在实施上。

【问题讨论】:

  • 您可以使用states * ';' 和states.split ';',并确保states 中不出现分号。

标签: ruby-on-rails database


【解决方案1】:

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 }

【讨论】:

  • 我喜欢你的回答我现在很难将数组保存到列中。
  • 如果您使用的是现有列,您可能需要将列类型更改为 :text 以适合您的数组。 (检查 your_a.to_yaml.length。)
【解决方案2】:

您也可以在用户和状态之间建立一个包含多对多关系的状态表。这将使查询更有效率。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多