試す:
validates_confirmation_of :password, :if => :password_required?
validates :password_confirmation, :presence => true, :if => '!password.nil?'
検証はIFにトリガーされるだけであることに注意してください password_required?
trueを返します password_required?
の場合はfalseを返します password_confirmation
フィールドはnilです。
そうするために password_confirmation
NILになるためのフィールド、あなたは単に削除する必要があります password_confirmation
フォームからのフィールドとその方法では、常に検証を迂回することができます。
代替ソリューション:
2)パスワードフィールドにランダムなセキュリティ生成された番号を保存するだけです(簡単なので、整合性も維持するためです)。
self.password = self.password_confirmation = SecureRandom.urlsafe_base64(n=6)
また、そのようなフィールドをユーザーによって残されているとおりに識別されるべきであれば、その後、そのような状態に固有のパスワードを与えることができます。
if(self.password == "something unique" and self.password_confirmation == "something unique")
flash[:notice] = "The user has not password"
end
その後、UIレベルでは、上記の条件を使用して空白で表示するだけです。