I have three classes: School
, Account
, and Administratorship
.
School
has_many :administatorships
has_many :administrators, :through => :administratorships
Account
has_many :administratorships
Administratorship
belongs_to :account
belongs_to :school
before_destroy :confirm_presence_of_alternate_administratorship_in_school
protected
def confirm_presence_of_alternate_administratorship_in_school
unless school.administrators.count(["administratorships.account_id != #{id}"]) > 0
errors.add_to_base "The school must have at least one administrator"
end
end
Now, what I would like to happen is when I call destroy
on an instance of Administratorship
, for it to add an error to the model and prevent the destruction of the model. I have removed the unless
statement to see if that was preventing the error from being added, but it wasn't the case. It seems that having errors on the model does not prevent the destroy from occurring.
So my question is, is there any way I can prevent the destroy from occurring using validations? I realize I could define a method that destroys only if the above condition is met, but it seems that a validation approach is a more elegant solution.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…