rails 5 - before_destroy - 救援例外

时间:2016-10-26 08:33:24

标签: ruby-on-rails

在我的应用中,我希望避免在关联记录中使用记录时将其删除。例如,如果业务伙伴有文档(作为发送者或接收者),则不应销毁它,并且用户应该收到一条flash消息。

我使用下面的代码,但得到一个例外。

before_destroy do |business_partner|
    if Document.where(:sender_id => business_partner).exists? ||
       Document.where(:receiver_id => business_partner).exists? ||
       Annotation.where(:sender_id => business_partner).exists?  ||
       Annotation.where(:receiver_id => business_partner).exists?
      raise "#{business_partner.name} has ongoing activity and cannot be deleted."
    end
end

尝试了几种替代方案 - 例如flash[:notice]message:

应该怎么做?

1 个答案:

答案 0 :(得分:1)

你得到一个例外,因为你raise

您可以使用警报将其更改为重定向:

redirect_to root_path, alert: "#{business_partner.name} has ongoing activity and cannot be deleted."

您可能还想查看关联dependent: :restrict_with_error

  如果

:restrict_with_error导致错误添加到所有者   有任何相关的对象。