Tengo tres clases: Escuela, Cuenta y Administración.Validar antes de destruir
Escuela
has_many: administatorships
has_many: administradores,: a través de =>: administratorships
cuenta
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
Ahora, lo que me gustaría pasar es cuando llamo destroy
en una instancia de Administratorship, para que se añada un error al modelo y evitar la destrucción del modelo. He eliminado la declaración de menos para ver si eso impedía que se agregara el error, no fue el caso. Parece que tener errores en el modelo no impide que ocurra la destrucción.
Así que mi pregunta es, ¿hay alguna manera de evitar que se produzca la destrucción utilizando validaciones? Me doy cuenta de que podría definir un método que se destruye solo si se cumple la condición anterior, pero parece que un enfoque de validación es una solución más elegante.
posible duplicado de [¿Cómo puedo 'validar' en destroy in rails] (http: // stackoverflow.com/questions/123078/how-do-i-validate-on-destroy-in-rails) –
¿No debería ser '> 1'? ¿No se ejecuta esta consulta * antes * de que ocurra la eliminación? – panzi
@panzi es contar las administraciones que no tienen la identificación de cuenta de la actual administración – tanman