2017-09-26 27 views
1

我有2個模型,Bidding和BiddingItem。當我在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 

我怎麼能顯示一個閃存通知信息給用戶,而不是收到此錯誤看法或根本沒有得到任何錯誤(使用我之前提到的依賴)的?

enter image description here

回答

1

你可以用你的biddings_controllerActiveSupport#rescue_from並在with選項傳遞一個定義的私有方法,以「養」在控制器每次這樣的錯誤occurrs。

正如你所定義的方法,任何邏輯被使用,那麼你可以重定向到同一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

看起來您正在嘗試刪除出價,並且有一個bidding_item條目指向您要刪除的內容,對嗎?

我想你應該添加一個回調,before_delete,檢查那裏的這種情況,並添加一個錯誤。

你也可以使用:nullify標誌,如果你行的局面,這bidding_item將無效,當你刪除值bidding

相關問題