Rails 分享:Rails 模型的生命周期勾子一定要保证其返回值

psvr · 2014年05月15日 · 最后由 qichunren 回复于 2014年05月15日 · 1805 次阅读

Rails会尊重生命周期勾子的返回值,一旦最后一行无意间计算了false就会导致操作终止,例如不可保存。所以一个好习惯是最后一行写true以保证返回值。

作为一个最简单的例子说明这个问题,

class K1 < ActiveRecord::Base
  self.table_name = 'users'
  before_save do |record|
    self.admin = false
  end
end

K1.first.save!

改为下述代码就没有问题了,

class K2 < ActiveRecord::Base
  self.table_name = 'users'
  before_save do |record|
    self.admin = false
    true
  end
end

K2.first.save!
共收到 1 条回复

曾经遇到了两次这个坑。

2楼 已删除
3楼 已删除
4楼 已删除
5楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册