2011-12-30 74 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