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

psvr · May 15, 2014 · Last by qichunren replied at May 15, 2014 · 2574 hits

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 Floor has deleted
3 Floor has deleted
4 Floor has deleted
5 Floor has deleted
You need to Sign in before reply, if you don't have an account, please Sign up first.