Tengo un modelo llamado Suscripción que tiene un índice único en los campos [: correo electrónico,: ubicación]. Esto significa que una dirección de correo electrónico puede suscribirse por ubicación.Manejo de Excepciones únicas de registro en un controlador
En mi modelo:
class Subscription < ActiveRecord::Base
validates :email, :presence => true, :uniqueness => true, :email_format => true, :uniqueness => {:scope => :location}
end
En mi método de crear. Quiero manejar la excepción ActiveRecord::RecordNotUnique
de forma diferente a un error habitual. ¿Cómo agregaría eso a este método de creación genérico?
def create
@subscription = Subscription.new(params[:subscription])
respond_to do |format|
if @subscription.save
format.html { redirect_to(root_url, :notice => 'Subscription was successfully created.') }
else
format.html { render :action => 'new' }
end
end
end
El 'save!' Es lo que me estaba perdiendo. Ambos funcionan, sin embargo, su solución es más completa. También hice una pequeña edición en la línea de rescate que SO dice que necesita ser revisada por pares. – Dex
Cool. ¿Cuál es la edición? Actualizaré la respuesta con eso. – Chirantan
debe ser 'rescue ActiveRecord :: RecordInvalid, Exception => e' – Dex