【问题标题】:how to keep a hash value in the table column in rails如何在rails的表列中保留哈希值
【发布时间】:2011-05-22 03:43:07
【问题描述】:

我对 rails 很陌生。我有一个包含所有用户基本信息的表格,例如

用户(ID、姓名、电子邮件) 现在我正在尝试将这些用户的一些附加信息保存在单独的表格中,例如

user_details(id,user_id,additional_info)

我已经创建了这个 user_details 表。现在我尝试保留一些默认记录以供检查。如何将用户附加详细信息的哈希值保留在附加信息中,例如如果我的附加详细信息是 用户的 (designation,salary,prjtname) 在 User_details 表的附加信息列中。

我还必须为 User_details 表的这个 additional_info 列 提供什么数据类型。请给一些建议..

【问题讨论】:

    标签: mysql ruby-on-rails hash


    【解决方案1】:

    该列的数据类型必须是文本,因此您可以在迁移中指定:

    add_column :user_details, :additional_info, :text
    

    然后在您的模型中,您必须指定此列将包含一个哈希,然后您可以使用序列化命令:

    class UserDetail < ActiveRecord::Base
      serialize :additional_info
    

    之后就可以保存哈希信息了。

    @ud = UserDetail.new
    @ud.additional_info = {:salary => 1000000}
    @ud.save
    

    【讨论】:

    • 不知道“序列化”。 +1
    【解决方案2】:

    从 MySQL 5.7.8 开始,支持原生 JSON 数据类型,因此保存哈希更加直接,并且可以搜索等等:
    https://dev.mysql.com/doc/refman/5.7/en/json.html

    【讨论】:

    • 添加代码示例可能会更好(以防将来链接断开)。
    【解决方案3】:

    另一种选择是在模型上使用JSON fields。迁移将具有以下内容:

    create_table :events do |t|
      t.json 'payload'
    end
    

    【讨论】:

      猜你喜欢
      • 2014-09-22
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 2020-10-09
      • 2015-05-10
      • 2017-03-17
      • 1970-01-01
      • 2011-11-22
      相关资源
      最近更新 更多