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

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

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!

曾经遇到了两次这个坑。

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