我有两个模型,Bidding和BiddingItem。
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
通过向Bidding模型添加以下依赖项,我没有错误,但我仍然希望向用户显示一条消息。
has_many :bidding_items, dependent: :restrict_with_error
如何向用户显示flash通知消息,而不是获取此错误视图或完全没有错误(通过使用我之前提到的依赖项)?
答案 0 :(得分:1)
您可以使用biddings_controller
中的ActiveSupport#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 :(得分:1)
看起来您正在尝试删除出价,并且有一个bidding_item条目指向您要删除的内容,对吗?
我认为你应该添加一个回调函数before_delete
,检查这种情况并添加错误。
如果您在删除:nullify
bidding_item
将使该值无效,您也可以使用bidding
标记