私はレールに非常に慣れていないので、これを行う最善の方法は何だろうと思っています:
データベースにレコードを作成するコントローラーがあります。
特定の検証エラーが発生した場合にフラグを設定したいのですが、慣れ親しんだ Rails パターンでこれを達成する良い方法がわかりません。
私が検出したいモデルの検証は次のとおりです。
validates_uniqueness_of :title
私のコントローラーはこれをやっています:
fcs = Entity.create(:title => text)
上記のエラーが失敗した場合、作業する ActiveModel エラー コレクションがあります。
タイトルが取得されたことをプログラムで示すフラグを確実に設定するにはどうすればよいですか?
これまで検討してきた
fcs.errors.messages.has_key?(:title)
ただし、タイトルが他の理由で失敗した場合、これは true を返します。したがって、次のようなものが必要になります。
fcs.errors.messages[:title]==["has already been taken"]
しかし、それはメンテナンスの頭痛の種であり、異なるロケールによっても壊れます...
RoRでこれを行う方法を知っている人はいますか?
アドバイスをありがとう
編集: 提案されたフラグ「is_title_duplicated」の使用例:
if(! fcs.errors.empty?)
json['success']=false
json['errors']=fcs.errors.full_messages
json['title_was_duplicate'] = is_title_duplicated
render :json => json
...