2011-12-30 2 views
2

Каков наилучший способ проверить, что модельная связь используется в другой модели, чтобы предотвратить ее разрушение, создав тем самым сироту.Рельсы принадлежат зависимому уничтожению

Пример: У меня есть модели Ticket и TicketStatus. TicketStatus принадлежит Билету. Билет has_many TicketStatuses.

Я не должен удалять TicketStatus, если он уже назначен для Ticket. Я также хотел бы получить сообщение об ошибке.

ответ

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

Был ли этот ответ принят? Или есть лучший способ? –

+0

Это хорошее решение, OP все еще нужно принять его! – andrewpthorp

Смежные вопросы