检查模型关系是否在另一个模型中使用以防止其被破坏从而创建孤儿的最佳方法是什么。
示例:我有Ticket和TicketStatus模型。 TicketStatus属于Ticket。 Ticket has_many TicketStatuses。
如果TicketStatus已经分配给故障单,我应该无法删除它。我也想要一条错误信息。
答案 0 :(得分:3)
最简单的回调方式:
class TicketStatus < ActiveRecord::Base
belongs_to :ticket
before_destroy :check_ticket
private
def check_ticket
if ticket != nil
errors.add_to_base("cannot delete ticket status that has a ticket")
return false
end
end
end
这可以防止它并给你一个错误。
希望这有帮助!
答案 1 :(得分:2)
使用before_destroy
callback,并确保return false
取消即将删除。