【问题标题】:Change Attribute X if Attribute Y changes?如果属性 Y 更改,则更改属性 X?
【发布时间】:2015-06-25 18:44:34
【问题描述】:

我熟悉 Dirty Objects 并在 presave 回调中使用 attribute_changed?。当属性 Y 更改时,我想将一个属性更改回默认值。所以在伪代码中:

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

但是,更改 url 并尝试保存失败。它仍然通过了所有验证,所以我不知道从哪里开始。

【问题讨论】:

  • 您是在before_validationbefore_save 上这样做吗?
  • 这是before_save

标签: ruby-on-rails activerecord callback


【解决方案1】:

self.crawl_mode = false 将导致方法返回 false,这将中止保存。

试试这个:

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

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

【讨论】:

    猜你喜欢
    • 2019-10-26
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2019-08-11
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多