![](/img/trans.png)
[英]NoMethodError (undefined method `last' for true:TrueClass):
[英]NoMethodError (undefined method `validate' for true:TrueClass)
我模型中的這條線
validates :password,
length: { minimum: 8 },
allow_nil: true,
on: :create,
unless: (:uid.present? && :provider.present?)
造成
NoMethodError (undefined method `validate' for true:TrueClass)
並且在update_user期間沒有錯誤。
有語法錯誤嗎? 也許像參數這樣的東西沒有正確發送,還是其他東西?
發生此錯誤的原因是
unless: (:uid.present? && :provider.present?)
所以換成
unless: Proc.new{|u| u.uid.present? && u.provider.present?}
它會工作。
讓我知道您是否仍然面臨該問題。
unless
validates
選項, unless
需要符號或Proc。
validates :password,
length: { minimum: 8 },
allow_nil: true,
on: :create,
unless: Proc.new{ |model_instance| model_instance.uid.present? && model_instance.provider.present?}
該PROC語法是不是世界上最可讀的東西,所以如果你想清理這個了一下你一個符號傳遞給unless
選項和定義具有相同名稱的實例方法。
class User
include ActiveModel::Model
validates :password,
length: { minimum: 8 },
allow_nil: true,
on: :create,
unless: :has_uid_and_provider?
def has_uid_and_provider?
uid.present? && provider.present?
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.