2011-12-30 88 views
2

什么是最好的方法,检查模型关系是否在另一个模型中使用,以防止它被破坏,从而创建一个孤儿。Rails属于依赖破坏

例如:我有一个Ticket和TicketStatus模型。 TicketStatus属于Ticket。 Ticket has_many TicketStatuses。

如果TicketStatus已经分配给票证,我不应该删除它。我也想要一个错误消息。

回答

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 

这样可以防止它,给你一个错误。

希望这会有所帮助!

+0

此答案已被接受?或者,还有更好的方法? – 2012-01-02 01:42:58

+0

这是一个很好的解决方案,OP仍然需要接受它! – andrewpthorp 2012-01-02 01:46:12