2011-12-26 25 views
6

En mi proyecto, el descuento tiene y pertenece a muchas empresas. Tengo una regla de devolución de llamada asociación que un descuento no puede eliminar su última businss (manteniendo que siempre hay una businss para cada descuento):Cómo saltarse la devolución de llamada de asociación en destroy

has_and_belongs_to_many :businesses, 
    before_remove: :check_count, 

def check_count 
    raise 'Cannot remove latest business!' if businesses.count == 1 
end 

Sin embargo, me di cuenta de que no voy a ser capaz de eliminar descuentos . Dado que cuando hago discount.destroy, creo que intentará eliminar empresas, y en término aumentará el error.

¿Hay alguna forma de evitar esto, como algún tipo de :except como en los controladores?

+1

Compruebe aquí: http://guides.rubyonrails.org/active_record_validations_callbacks.html#skipping-callbacks –

Respuesta

14

Puede llamar al discount.delete que omitirá las devoluciones de llamada.

+0

Todavía quería mantener la integridad. Supongo que mi regla de devolución de llamada no se diseñó correctamente. – lulalala

Cuestiones relacionadas