NoMethodError(未定义方法“验证”为 true:TrueClass)

Sar*_*ran 3 validation activerecord ruby-on-rails

我的模型中的这条特定线

validates :password, 
     length: { minimum: 8 }, 
     allow_nil: true, 
     on: :create, 
     unless: (:uid.present? && :provider.present?)
Run Code Online (Sandbox Code Playgroud)

正在引起

NoMethodError (undefined method `validate' for true:TrueClass)
Run Code Online (Sandbox Code Playgroud)

并且 update_user 期间没有错误。

有语法错误吗?也许像参数这样的东西没有正确发送或者是其他什么?

Pra*_*wal 5

发生此错误的原因是

unless: (:uid.present? && :provider.present?)
Run Code Online (Sandbox Code Playgroud)

所以将其替换为

unless: Proc.new{|u| u.uid.present? && u.provider.present?}
Run Code Online (Sandbox Code Playgroud)

它会起作用的。

如果您仍然面临这个问题,请告诉我。