伪造ActiveModel的变化或模仿'触摸'一列?

时间:2016-10-12 04:56:33

标签: ruby-on-rails activemodel

我想不出一个更好的方式来标题这个抱歉!

最终我有一个回调,99%的时间我只想在特定的属性列表发生变化时运行。但在一些情况下,我希望能够通过我的return unless previous_changes & watched_attributes

有没有办法模拟对特定属性的更改?以某种方式将model.attribute_changed?设置为true?

我一直在使用model.touch,但updated_at是我故意忽略的专栏。

2 个答案:

答案 0 :(得分:0)

是的,您可以使用以下命令

检查您的属性是否已更改
@object.column_changed? #=> true

您可以使用更改的方法

获取更改的属性数组
@object.changed #=> ['column_name'] 

答案 1 :(得分:0)

您可以尝试以下内容:

object.attribute_name_will_change!
object.changed << :attribute_name
puts object.attribute_name_changed?
puts object.changed?

结果输出是:

true
true

attribute_name将替换为您的属性名称。