【发布时间】:2014-09-24 16:07:14
【问题描述】:
如果我在创建之前有一些操作,例如:
before_create :generate_token
private
def generate_token
self.auth_token = loop do
random_token = SecureRandom.urlsafe_base64(nil, false)
break random_token unless self.class.exists?(auth_token: random_token)
end
end
在编写验证时,我发现 validates :auth_token, presence: true, on: :create 失败。
但是,validates :auth_token, presence: true, on: :after_create 有效。
这是为什么?
参考。 Active Record Callback Order 和 Active Record Validations :on
编辑:奇怪的是,on: :before_create 通过验证,on: :create 失败,on: after_create 成功。这很令人费解,请解释一下吗?
【问题讨论】:
标签: validation activerecord ruby-on-rails-4