0
Deviseを認証として使用するアプリケーションがあります。私はユーザーがそこに電子メールアドレスを変更できるようにしたくありません。私は、電子メール属性をUserモデルでのみ読み取るように設定してこれを行っています。Rails Deviseロールバックトランザクションでエラーが発生しない
class User < ActiveRecord::Base
attr_readonly :email
end
これはうまくいきます:Railsはトランザクションをロールバックします。 Deviseは、しかし、更新が成功したと考えて、メッセージを表示します。
"Your account has been updated successfully."
フラッシュ通知を返す私のonwメソッドを作成するなどいくつかのことを試しましたが、アカウントが正常に更新されたということを続けています。
レコードが正しく保存されていないときにエラーを発生する方法はありますか?
アッシュヴィンのアンワーカーの後に編集します。
def email=(address)
begin
if new_record?
write_attribute(:email, address)
end
rescue Exception => error
flash[:alert] = error.message
end
end
ですが、まだ正常にあなたがここにコードを貼り付けてくださいすることができ、あなたが実行している – Samuel
何のアクションの更新だと言っている中は、例外処理を使用することができますので、私は正確なアイデアを得ることができます。 – ashvin
私が使用しているコードのカスタムコードを追加しました。私は、電子メールアドレスがparams [:email]と異なる場合、コントローラのチェックを行う方が良いかもしれないと思っています。 – Samuel