2017-09-26 19 views
1

私は2つのモデル、入札と入札を行っています。RailsでPG :: ForeignKeyViolationエラーが発生した場合、Flash通知メッセージを表示するには

class Bidding < ActiveRecord::Base 
    has_many :bidding_items, dependent: :restrict_with_error 
    accepts_nested_attributes_for :bidding_items, reject_if: :all_blank, allow_destroy: true 
end 

class BiddingItem < ActiveRecord::Base 
    belongs_to :bidding 
end 

次の依存関係を入札モデルに追加すると、エラーは発生しませんが、依然としてユーザーにメッセージを表示したいと思います。私が代わりにこのエラービューを取得したり(私は前に述べた依存関係を使用して)全くエラーが発生していないのユーザーにフラッシュ通知メッセージを表示することができる方法

has_many :bidding_items, dependent: :restrict_with_error 

?毎回このようなエラーがそのコントローラにoccurrs「上げる」ために、

enter image description here

答えて

1

あなたのbiddings_controllerActiveSupport#rescue_fromを使用することができますし、withオプションで定義されたプライベートメソッドを渡します。

あなたが使用されている方法で任意のロジックを定義することができるため、その後は同じbiddings_pathにリダイレクトすることができ、同様に、noticeフラッシュ内のカスタムメッセージを渡す:あなただけに確認する必要があり

class BiddingsController < ApplicationController 
    rescue_from ActiveRecord::InvalidForeignKey, with: :invalid_foreign_key 

    private 

    def invalid_foreign_key 
    redirect_to biddings_path, notice: 'Some custom message.' 
    end 
end 

現在のビュー内にnoticeをレンダリングします。

1

あなたが入札を削除しようとしているようですが、あなたが削除したいものを指し示す入札項目がありますか?

コールバックを追加する必要があります、before_delete、そのような条件をチェックしてエラーを追加してください。あなたはこのbidding_itemはあなたが削除すると無効値を持つことを状況にOKしている場合にも:nullifyフラグを使用することができ

bidding

関連する問題