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!