在我的应用中,我希望避免在关联记录中使用记录时将其删除。例如,如果业务伙伴有文档(作为发送者或接收者),则不应销毁它,并且用户应该收到一条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:
应该怎么做?
答案 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
导致错误添加到所有者 有任何相关的对象。