假设jsonb列为data_config
我想检查特定键的值在保存前是否已更改。
测试数据:
data_config: {
"status"=>true,
"text"=>"sample"
}
导轨型号:
attr_json_config(default_container_attribute: :data_config)
attr_json :status, :boolean, default: true
before_save :check_config
def check_config
if self.status_changed? # => want to have something like this to check if value changed?
# ... do something
end
end
这在我的情况下工作,但我相信有一个更好的方法。
status_val = self.attr_json_changes.changes_to_save.try(:[], "status")
# above returns [true, false] (old & new value)
if status_val.try(:first) != status_val.try(:last)
...do something
end
1条答案
按热度按时间wecizke31#
为什么不将参数与当前值进行比较?
因为您提供的信息很少,所以我假设您希望在状态改变时更改jsonb中的其他键,在这种情况下,您应该在更新后的值准备提交之前使记录不可变。
所以在你的控制器里,它应该是这样的:
我希望这种方法能对你有所帮助。