检查ActiveRecord数组中的单元格是否已更改

时间:2018-09-20 13:09:02

标签: ruby-on-rails ruby activerecord

我正在使用支持数组的PostgreSQL,这非常方便。有时我需要查看元素是否已更改。

我知道我们可以做到:

MyActiveRecordArray.changed?
=> true

但是有办法吗?

MyActiveRecordArray[0].changed?

感谢您的回答和帮助!

3 个答案:

答案 0 :(得分:1)

尽管不能直接做到,但可以使用console.log(this.users.filter(function (val) { return val.id_verified === 0 }).length) 方法:

changes

doc:https://api.rubyonrails.org/classes/ActiveModel/Dirty.html#method-i-changes

答案 1 :(得分:0)

这是我想出的解决方案,多亏您的回答

changes_index = []  
old_array, new_array  = model.changes['array_field']  
new_array.each_with_index { |x, i| changes_index << i if x != old_array[i] }

答案 2 :(得分:0)

您可以使用attribute_name_changed?方法直接询问ActiveRecord实例是否更改了特定属性。

根据您的情况:

MyModel.active_record_array_changed?

这将返回truefalse,具体取决于特定属性是否已更改。