У меня есть модель учителя, которая принимает классы_атедов для классов. Я не хочу иметь возможность удалять класс, если в классе есть пользователи и я хочу напечатать сообщение проверки.
Вот что у меня есть ...
class Teacher < ActiveRecord::Base
accepts_nested_attributes_for :klasses, :reject_if => proc { |a| a['name'].blank? }, :allow_destroy => true
end
class Klass < ActiveRecord::Base
belongs_to :teacher
has_many :users
before_destroy :reject_if_has_users
private
def reject_if_has_users
if users.length > 0
errors.add_to_base "You cannot delete this class as it contains users."
false
else
true
end
end
end
Я хочу, чтобы проверка завершилась неудачно, когда я пытаюсь удалить класс из учителя, содержащего пользователей, когда я использую accepts_nested_attributes_for, и передать "klasses_attributes" => {"0" => {"name" => "test" , "_destroy" => "1", "id" => "17183"} хеш.
Приведенный выше метод предотвратит удаление класса, если у меня нет строки error.add_to_base. Однако это не приведет к отображению сообщения проверки. Когда у меня есть эта строка, это не мешает удалению.
Спасибо
Тим