私のアプリでは、認証エンジンとして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. KeystoneJSで検証が失敗した場合にフラッシュメッセージを作成
- 3. yii2検証が失敗したときにcaptchaをリフレッシュ
- 4. AngularJSは、入力がダイナミック埋めたときに失敗し、検証を形成
- 5. モデルの検証に失敗しましたが作成されました
- 6. JUnitアサートに失敗したときのカスタムメッセージ
- 7. 生成されたメタタグがw3cの検証に失敗する
- 8. トークン作成失敗と検証失敗の違いは何ですか? (ストライプ)
- 9. 検証が失敗し、
- 10. Spring Boot REST API/Spring Security:認証が失敗したときにカスタムメッセージを返します。
- 11. Jenkinsは、JMeterビルドが実際に失敗したときに成功したことを検証します。
- 12. MVC2 Html.TextBoxは、検証が失敗したときにサイズが少し変わる
- 13. C#の検証に失敗したときにJavaScriptコードが停止する
- 14. 大きなファイルがアップロードされたときにラーバル検証が失敗する
- 15. 検証が成功しなかった場合、MVC5ドロップダウン付きビューの作成が失敗する
- 16. カスタムメッセージlaravel検証
- 17. JSF - 検証に失敗したフォーカスコンポーネント
- 18. laravel認証が失敗したときにAjaxが成功する
- 19. RobotParserがSSL証明書の検証に失敗しました
- 20. 検証に失敗したときにボタンを無効にする
- 21. Rong with Mongoid:認証が失敗したときにエラーを生成します。
- 22. XSD検証が失敗している
- 23. Asp.netとJQuery:フォームが検証に失敗したときのダイアログウィンドウの表示
- 24. CDialog.DoModal()関数がダイアログボックスの作成に失敗したとき?
- 25. フィールドの検証に失敗したときにグローバルメッセージを追加します。
- 26. カスタム検証アノテーションが失敗します
- 27. gulpタスクが失敗したときにmsbuildが失敗する
- 28. Laravel検証カスタムメッセージは
- 29. RspecとFactoryGirlを使用してリストを作成しようとすると、検証に失敗しますか?
- 30. サービス検証:検証が失敗した場合は例外をスローします
これはどこですか? 'config/locals/en.yml'? – ahnbizcad
「上記の妥当性検証モジュール」を取り除いて、ユーザーモデルにあなた自身を補完することはどういう意味ですか?まず、上記の妥当性検証モジュールはありません。上に書いたのは、en.ymlファイルであり、devise.en.ymlファイルではありません。さらに、devise.en.ymlファイルでさえ検証モジュールではありません。あなたはdevise.en.ymlコードをどのようにUserモデルに入れることができますか?それは丸い穴に四角いペグのようなものです。 「そのループを維持する」とはどういう意味ですか? 「パスワード変更」の検証をスキップすると、無限ループに入りますか? – ahnbizcad
別の質問:私はこのymlメッセージはメッセージであり、実際の検証ではないと考えました。なぜ彼らがバリデーションをバイパスするのでしょうか?多分私の提案された編集内容はあなたの意図したものではないかもしれませんが、とにかく前には明らかではありませんでした。 – ahnbizcad