2016-12-20 6 views
0

私は次のようになりますクラスがあります。カスタムモデル名を

class OrganicBipedalLifeform < ActiveRecord::Base 
    # Has the field 'name' 

    validate :presence_of_name 

    private 

    def presence_of_name 
    errors.add(:base, "name can't be blank") unless name.present? 
    end 
end 

をそして、私は検証エラーメッセージが除外(または変更)モデル名が、言うことをカスタム文字列を使用したいです'人間/ヴァルカン名は空白にできません'。

このモデルの検証エラーのデフォルトメッセージにしたい場合は、検証エラーが表示される可能性があるすべてのビューのフラッシュの詳細を変更するよりも優れた方法がありますか?つまり、モデルそのものを変更することによって?

これが他の場所で回答されている場合はお詫び申し上げます。私は、フィールド名のカスタマイズに関する多くの記事を見つけましたが、モデル自体の名前の変更については何も見つかりませんでした。

ETA:@TomDunning @Dan、私は問題の原因を誤って特定した(または少なくとも十分に具体化していない)と思いますので、私が望むことを尋ねる新しいスレッドを作成するのがより良い質問です。

+0

カスタムエラーメッセージについては

? 'OrganicBipedalLifeform'はあなたが名前を提供できなかったことをどのように知っていますか? – Dan

答えて

0

:baseself.class_nameまたはself.class.table_nameまたは同等のクラスメソッドに置き換えることができると思います。

+0

@ TomDunningの回答と同様に、モデル名は変更されません。モデル名の後に別の文字列が挿入されます。 – Arepo

0

悪いデザインであることを、ちょうどこれを使用する:

validate :name, presence: true

「名は空白にすることはできません」とにかく、デフォルトのエラーになります。

これらを抽出したい場合は、後でなどと呼んでください。 "人間/バルカンは" から来たん

validate :name, presence: { message: 'must not be blank' }

+0

私はメッセージをカスタマイズしようとしているからです。しかし、私が書いたやり方とあなたが記述する慣習的な方法の両方は、(Railsで翻訳された)オブジェクト名を保持しています。つまり、ページには、「人間/バルカン名は空白にすることはできません」ではなく、「有機2足の生命体名は空白にできません」と表示されます。 – Arepo

+0

@Arepoは、問題の属性からエラーを移動する理由が十分ではありません。これはこれと重複しています:http://stackoverflow.com/questions/5785503/change-error-field-name-in-rails – TomDunning

+0

また、http://guides.rubyonrails.org/active_record_validationsを参照してください。メッセージを変更する別の方法のhtml#メッセージ – TomDunning

関連する問題