如何序列化 - 反序列化params哈希对象?

时间:2013-06-25 13:31:53

标签: ruby-on-rails ruby ruby-on-rails-3.2

我怎么会做这样的事情?我希望能够将params对象存储到模型的字符串属性中,并且能够将其反序列化为params散列对象,我将如何在ruby中执行此操作?或者铁轨中是否有开箱即用的解决方案?

2 个答案:

答案 0 :(得分:7)

Active Record can serialize any object in text columns using YAML。为此,您必须通过调用类方法serialize来指定它。这使得存储数组,散列和其他不可映射的对象成为可能,而无需进行任何额外的工作。

class User < ActiveRecord::Base
  serialize :preferences
end

user = User.create(preferences: {background: "black", display: "large"})
User.find(user.id).preferences 
# => {background: "black", display: "large"}

答案 1 :(得分:0)

Mori的回答是正确的,但如果模型中的数据类型确实是字符串,则可能不合适。建议你改用文字。