什麼是最好的方法,檢查模型關係是否在另一個模型中使用,以防止它被破壞,從而創建一個孤兒。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