Рельсы Принадлежит Зависимому Разрушению - PullRequest
2 голосов
/ 30 декабря 2011

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

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

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

Ответы [ 2 ]

3 голосов
/ 30 декабря 2011

Самый простой способ обратного вызова:

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

Это предотвращает это и выдает ошибку.

Надеюсь, это поможет!

2 голосов
/ 30 декабря 2011

Используйте before_destroy обратный вызов и убедитесь, что return false, что отменяет надвигающееся удаление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...