我可以将Model的属性另存为哈希吗?

Bla*_*man 2 ruby ruby-on-rails

我想做以下事情.

我希望我的模型有一个存储哈希值的列,即名称/值对.当我在我的模型中加载一条记录时,我不希望它解析以从数据库中取消分配值,除非我访问它,即延迟初始化.

这是b/c只有db中我的行的几个百分比将具有哈希值,并且很少会访问它们.

这可能吗?

示例用法:

user.properties["age"] = 12

user.properties["height"] = xxx

user.save
Run Code Online (Sandbox Code Playgroud)

我不确定如何将它保存到数据库中,也许是以json格式保存?

vis*_*ise 5

是的,您可以序列化数据.

摘自http://api.rubyonrails.org/classes/ActiveRecord/Base.html:

class User < ActiveRecord::Base
  serialize :preferences
end

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