如果属性 Y 更改,则更改属性 X?

Change Attribute X if Attribute Y changes?

我熟悉脏对象并在预保存回调中使用 attribute_changed?。当属性 Y 更改时,我想将一个属性更改回默认值。所以在伪代码中:

def pre_save
  self.crawl_mode = false if self.url_changed?
end

但是,更改 url 并尝试保存失败。它仍然通过了所有验证,所以我不确定从这里去哪里。

self.crawl_mode = false 将导致方法 return false 将中止保存。

试试这个:

def pre_save
  self.crawl_mode = false if self.url_changed?
  true
end

Ruby 方法隐式 return 最后赋值的值(更准确地说,最后一个表达式)