我的模型中的这一特定行
validates :password,
length: { minimum: 8 },
allow_nil: true,
on: :create,
unless: (:uid.present? && :provider.present?)
导致
NoMethodError (undefined method `validate' for true:TrueClass)
并且在update_user期间没有错误。
是否存在任何语法错误?或许类似参数未正确发送或是其他内容?
答案 0 :(得分:3)
这个错误正在发生,因为
unless: (:uid.present? && :provider.present?)
所以用
替换它unless: Proc.new{|u| u.uid.present? && u.provider.present?}
它会起作用。
如果您仍然面临这个问题,请告诉我。
答案 1 :(得分:3)
unless
的{{1}}选项需要符号或过程
validates
Proc语法不是世界上最具可读性的东西,所以如果你想稍微清理一下,你可以将符号传递给validates :password,
length: { minimum: 8 },
allow_nil: true,
on: :create,
unless: Proc.new{ |model_instance| model_instance.uid.present? && model_instance.provider.present?}
选项并定义一个实例方法同名。
unless