什么是最好的方法,检查模型关系是否在另一个模型中使用,以防止它被破坏,从而创建一个孤儿。Rails属于依赖破坏
例如:我有一个Ticket和TicketStatus模型。 TicketStatus属于Ticket。 Ticket has_many TicketStatuses。
如果TicketStatus已经分配给票证,我不应该删除它。我也想要一个错误消息。
什么是最好的方法,检查模型关系是否在另一个模型中使用,以防止它被破坏,从而创建一个孤儿。Rails属于依赖破坏
例如:我有一个Ticket和TicketStatus模型。 TicketStatus属于Ticket。 Ticket has_many TicketStatuses。
如果TicketStatus已经分配给票证,我不应该删除它。我也想要一个错误消息。
最简单的方法回调:
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
这样可以防止它,给你一个错误。
希望这会有所帮助!
使用一个before_destroy
callback,并确保return false
,它取消即将删除。
此答案已被接受?或者,还有更好的方法? – 2012-01-02 01:42:58
这是一个很好的解决方案,OP仍然需要接受它! – andrewpthorp 2012-01-02 01:46:12