【发布时间】:2014-01-20 17:34:59
【问题描述】:
我有一个 ActiveRecord 对象,它将哈希属性序列化到我的数据库列之一。我想摆脱这种情况,因为通过其中一个哈希键进行查询非常困难/不干净。因此,我将散列的所有键拆分为模型上的单独属性。但是,我有很多地方使用此代码,所以与此同时,当我转换所有我想在我的 ActiveRecord 对象上拥有一个仅用于 Rails 的属性(即它不会填充回我的数据库)时像以前一样将这些属性添加到哈希中,并允许设置和获取值。
例如,这就是我曾经拥有的:
class MyCls < ActiveRecord::Base
serialize :state, Hash
attr_accessible :id, :mode
我正在摆脱 :state 并将其替换为构成此哈希的 7 个不同值。但我仍然希望能够像这样访问这些值:MyObj.state[:obj_num]。即使我现在拥有obj_num 作为属性(即MyObj.obj_num)。我认为最好的方法是拥有一个带有 getter 和 setter 的 state 属性,但我似乎不太能理解语法。对于 setter,我需要同时支持将哈希设置为一个整体并设置单个键。
【问题讨论】:
标签: ruby-on-rails rails-activerecord