estoy tratando de hacer estoomite silenciosamente agregar con la devolución de llamada de la asociación before_add en lugar de generar una excepción?
has_many :roles, :before_add => :enforce_unique
def enforce_unique(assoc)
false if exists? assoc
end
A partir de los documentos: "Si una devolución de llamada before_add lanza una excepción, el objeto no se añaden a la colección". El uso de falsa anterior no impide que el complemento, así que estoy obligado a hacer esto:
def enforce_unique(assoc)
raise if exists? assoc
end
De esta manera, es cierto que no quede añadió, pero también plantea una excepción que tiene que ser manejado . No es muy útil para mí aquí. Preferiría que esto se comportara más como la devolución de llamada de AR previa a_guardado, donde devolver FALSO también evita guardar (o agregar) pero no genera una excepción.
En este caso anterior, preferiría que simplemente no agregue la asociación silenciosamente. ¿Hay alguna forma de hacer esto? Me falta algo? ¿O está planteando una excepción como la única opción aquí?