Ruby
Rails
RubyOnRails

flash エラーメッセージ 特定カラムのメッセージだけを取り出す方法

More than 1 year has passed since last update.

起きた事象

controllerにおいて例外処理をしているとき

raise  ActiveRecord::RecordInvalid
flash.now[:alert] = @takumi.errors.full_messages
render :new

=> 例外処理をしているのに、すべてのエラーが取れてしまうため例外が特定できない

解決策

full_messages_for(:symbol)を使うといい感じに取り出せるヨ

@messages=
  {:first_name=>["を入力してください"]}

[1] pry(main)> takumi.errors.full_messages
=> ["first_nameを入力してください",
    "性別を入力してください"
]

[2] pry(main)> takumi.errors.full_messages_for(:first_name)
=> ["first_nameを入力してください"]

結果

raise  ActiveRecord::RecordInvalid
flash.now[:alert] = @takumi.errors.full_message_for(:first_name)
render :new

参考
API dock