0

私の現在のRORプロジェクトでは、検証のためにdevise pluingを使用しています。パスワード変更フォームの検証では、userモデルで次のコードを使用しています

validates_presence_of :password, :password_confirmation

しかし、検証したいのはアクションのみです。という名前のユーザーコントローラーに関数がありますupdate_password。次のようにアクションを割り当てることができることがわかりました。

validates_presence_of :password, :password_confirmation, :on => :update_password

しかし、うまくいきません。パスワードおよびパスワード確認フィールドが空の場合でも、フォームは送信されます。特定のアクションに対してのみ検証を設定する方法を解決するのを手伝ってくれる人はいますか? 大きな助けになります

どうもありがとう

4

2 に答える 2

2

deviseに実装されている:validatableオプションを使用できます。モデルに追加するだけです

devise :validatable

そして、config/initializers/devise.rbファイルに検証オプションを設定します

# ==> Configuration for :validatable
# Range for password length. Default is 6..128.
config.password_length = 6..128

# Email regex used to validate email formats. It simply asserts that
# an one (and only one) @ exists in the given string. This is mainly
# to give user feedback and not to assert the e-mail validity.
config.email_regexp = /\A[^@]+@[^@]+\z/

もう1つの方法は、独自の正規表現検証を使用することです。モデルに追加できます

validates :password, :format => { :with => /\A[a-zA-Z]+\z/, :message => "Only letters allowed" }

その後、@ user.validを呼び出すことができますか?コントローラで、ユーザーインスタンスが正しいことを確認します。

モデルを検証するには、さまざまな方法があります。ガイドで検証とActiveRecordコールバックの詳細を読むことができます:http://guides.rubyonrails.org/active_record_validations_callbacks.html

于 2012-09-06T12:25:20.040 に答える
0

devise を使用している場合は、そのことを確認する必要はありません。デフォルトでは、それはあなたのためのハンドルです。

于 2012-09-06T12:02:16.117 に答える