我有一个属性priority
,它以整数形式存储在数据库中。我将它们映射到特定值:
PRIORITY = {
high:1,normal:2,low:3
}
当我想访问阅读器时,我将其覆盖:
def priority
PRIORITY.key(read_attribute(:priority))
end
我的问题是,当我想检查是否有任何属性值已更改并且我调用changes
方法时,我得到以下结果:
task.changes
=> {"priority"=>[2, :high]}
对于原始值,它采用数据库值。对于更改的值,它将获取getter访问器值的结果。这是不一致的。
如何使changes
调用始终如一?
答案 0 :(得分:1)
您可能想尝试在模型中使用枚举,如下所示:
enum priority: { high: 1, normal: 2, low: 3}
请参阅此处的文档http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html