私のアプリでは、認証エンジンとしてdeviseを使用しています。 devise検証に失敗した場合にカスタムメッセージを使用する方法はありますか? パスワードが空白の場合、Deviseは私に次のメッセージを表示します:Password can't be blank
、別のメッセージが必要です。どうすればいいですか?検証が失敗したときにカスタムメッセージを作成する
答えて
のActiveRecord en.yml私はあなたがここに工夫
の検証メッセージを変更したい場合はどのように専用であることをお勧め答えです。 ymlは次のように表示されます。
あなたは上記のアプローチに従うならば、あなたが代わりに検証モジュール
を考案カスタマイズするのをこのように定義するdviceがあるので、私が上記の工夫を削除するには、検証に例のための場所または2
をスキップすることを可能でしょうその後、検証モジュールと ユーザーモデル
その後、すべての検証がために働くだろうが、あなたのパスワードは決して与え、決してたにもかかわらず、ログインしたことにより、パスワードの変更はあり
に検証を逃すで独自のsubstitue与えられた
それも
チアー
よろしくのループをキープ
完全な答えではありませんが、これはdevise-internalキーを使用してI18nで解くか、アクティブなレコードの検証エラーメッセージをユーザーモデルにオーバーライドする必要があります。
ここで同様の質問です:Devise attributes for i18n?
は下記URLをご参照ください。
http://railscasts.com/episodes/210-customizing-devise?view=asciicast
ユーザーがサインインされている場合は、config/locales
下devise.en.yml
内のすべてのエラーメッセージを編集することができます。
あなたがサインアップしている場合、Deviseはカスタマイズなしで独自の検証を提供します。カスタマイズする場合は、User
モデルを編集できます。
devise :validatable
を見つけ、:validatable
オプションを削除します。その後、通常のレールバリデーションを使用できるはずです。これにより、すべての検証を自分で行う必要があることに注意してください。
validates_presence_of :password, :message=>"Your custom error message!"
いくつかの通常の検証:
validates_confirmation_of :password
validates_presence_of :password, :on => :create
validates_presence_of :email
validates_uniqueness_of :email
あなたはその後、検証メッセージに変更したい場合は、設定/ロケール/ devise.en.ymlからあなたの工夫メッセージをカスタマイズすることができますが、 delete:Modelから検証可能です。その後、前と同じように検証メッセージを変更することができます。 例:
validates_uniqueness_of :email, :case_sensitive => false, :allow_blank => true, :if => :email_changed?
validates_format_of :email, :with => Devise.email_regexp, :allow_blank => true, :if => :email_changed?
validates_presence_of :password, :on=>:create
validates_confirmation_of :password, :on=>:create
validates_length_of :password, :within => Devise.password_length, :allow_blank => true
- 1. struts2の検証:検証に失敗したときにドロップダウンリストを再作成
- 2. yii2検証が失敗したときにcaptchaをリフレッシュ
- 3. モデルの検証に失敗しましたが作成されました
- 4. 検証が失敗し、
- 5. MVC2 Html.TextBoxは、検証が失敗したときにサイズが少し変わる
- 6. 検証が成功しなかった場合、MVC5ドロップダウン付きビューの作成が失敗する
- 7. JSF - 検証に失敗したフォーカスコンポーネント
- 8. 検証に失敗したときにボタンを無効にする
- 9. Rong with Mongoid:認証が失敗したときにエラーを生成します。
- 10. CDialog.DoModal()関数がダイアログボックスの作成に失敗したとき?
- 11. Asp.netとJQuery:フォームが検証に失敗したときのダイアログウィンドウの表示
- 12. アンプソーシャルシェアの検証に失敗しましたが、コンポーネントは動作します
- 13. ユニットテストが失敗したときにジェンキンスが成功する(レール)
- 14. Struts2の検証 - 検証が失敗した場合の子どもの再作成
- 15. Attachment_fuが更新時に検証に失敗しました
- 16. BizTalk生成XSDがXMLの妥当性検証に失敗しました
- 17. Devitsは、同じURLに検証が失敗しましたか?
- 18. Yiiがファイルサイズの検証に失敗しました
- 19. Three20:アプリケーションがcodesign検証に失敗しました
- 20. PHP SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました
- 21. 検証に失敗したフォームを再入力する
- 22. モデルの検証が失敗したときにURLが変更されると混乱します。
- 23. モデルによるカスタム検証:保存に失敗しました
- 24. シェルスクリプトから作成するときにJavaプロセスの作成が失敗する
- 25. Mockito検証に失敗しない
- 26. アプリケーションの検証に失敗しました:設定ディレクトリを作成できません:/user/username/.itmstransporter
- 27. ActiveModel:関連するモデルが失敗した場合の検証の失敗を無効にする
- 28. テーブル作成に失敗しました
- 29. jQueryプラグインを検証するカスタムメッセージ
- 30. ファイルをアップロードするときのカールエラー "フォームポストデータの作成に失敗しました"
これはどこですか? 'config/locals/en.yml'? – ahnbizcad
「上記の妥当性検証モジュール」を取り除いて、ユーザーモデルにあなた自身を補完することはどういう意味ですか?まず、上記の妥当性検証モジュールはありません。上に書いたのは、en.ymlファイルであり、devise.en.ymlファイルではありません。さらに、devise.en.ymlファイルでさえ検証モジュールではありません。あなたはdevise.en.ymlコードをどのようにUserモデルに入れることができますか?それは丸い穴に四角いペグのようなものです。 「そのループを維持する」とはどういう意味ですか? 「パスワード変更」の検証をスキップすると、無限ループに入りますか? – ahnbizcad
別の質問:私はこのymlメッセージはメッセージであり、実際の検証ではないと考えました。なぜ彼らがバリデーションをバイパスするのでしょうか?多分私の提案された編集内容はあなたの意図したものではないかもしれませんが、とにかく前には明らかではありませんでした。 – ahnbizcad