0

我的模型中有 ff 代码:

before_save :before_save_method

attr_accessor :corrective_change
attr_accessible :corrective_change
attr_accessible :corrective_desc

  private 
    def before_save_method
      if corrective_change == 0
        self.corrective_desc = corrective_desc_was
      end
    end

但是,无论 的值corrective_change是多少,它的值self.corrective_desc仍然会根据用户的输入值进行更新。

所有变量的值都经过测试,我可以在记录器中正常查看它们,但条件不起作用。

谁能指出问题是什么?

非常感谢。

4

1 回答 1

0

1)您确定 Corrective_change 是整数而不是字符串?(比较 int 和 string = 失败)

2)这是一个新记录吗?如果是这样,corrective_desc_was 可能不存在(它不会在 2.3 中,不确定 3.x)

3)考虑尝试这个:

def before_save_method
  if self.corrective_desc_changed? && self.corrective_change == 0
    self.corrective_desc = self.corrective_desc_was
  else
    logger.info "corrective_desc not changed or corrective_change != 0"
  end
end

4)此外,如果它是纠正性更改,那么可能 before_update 会比 before_save 更合适,因为这也会在创建时调用。

于 2012-05-03T09:22:12.160 回答