Pregunta

Suponiendo has_one usuario: suscripción, suscripción belongs_to: usuario, y estoy usando accepts_nested_attributes_for a la suscripción nido atribuye a la forma de creación de usuarios, ¿cuál es la mejor forma de localizar y actualizar y existentes de suscripción (si existe) sobre la base de usuario. == correo electrónico Subscription.email?

Tenga en cuenta que las suscripciones existentes podrían tener user_id = nil

¿Fue útil?

Solución

Probablemente lo que quiere hacer es utilizar el correo electrónico como la clave externa:

class User < ActiveRecord::Base
  has_one :subscription, :foreign_key => "email", :primary_key => "email"
end

Otros consejos

Me imagino que esto tendría que ser dividida en un proceso de dos pasos:

  1. Busque el usuario que desea actualizar.
  2. Busque una suscripción (si los hay) con dirección de correo electrónico del usuario, establezca la suscripción del usuario a este registro.
  3. Actualizar el usuario de forma normal. Puesto que la asociación está presente (es decir user.subscription no será nil), los registros de suscripción se actualiza correctamente.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top