Rails actualizando los datos en un modelo desde el controlador de otro modelo

Tengo un modelo de usuario que tiene billing_id. Tengo un modelo de pedido que ejecuta transacciones con una pasarela de pago que devuelve una identificación de facturación que me gustaría guardar en la columna billing_id en el modelo de usuario. Creo que estoy mezclando los conceptos básicos de la architecture MVC.

Tengo la impresión de que UsersController y OrdersController actualizan los datos de sus respectivas tablas. ¿Eso significa que si tengo algo devuelto por OrdersController, como un ID de facturación, no hay otra manera de guardar ese ID de facturación en una columna billing_id en el modelo de usuario? Gracias y disculpa si esto es extremadamente rudimentario. 🙂

Además, pensé que una posible solución podría ser pasar de alguna manera el valor de retorno a través de ApplicationsController a UsersController para guardar en la tabla de usuarios. es posible?

Su tabla de pedidos de usuario debe tener una instancia de user_id, ya que un usuario puede tener varios pedidos.

Puedes hacer esto creando una migración:

rails g migration add_user_id_to_orders order_id:integer rake db:migrate 

Tus modelos se verán así:

 class User < ActiveRecord::Base has_many :orders end class Order < ActiveRecord::Base belongs_to :user end 

Necesita un enlace entre los dos (order_id), de lo contrario no tendrían conocimiento el uno del otro. Esto se conoce como una clave externa.

Cuando las cosas se configuran de esta manera, puede obtener los usuarios haciendo:

 User.find(1).orders 

Y puede encontrar la información de usuario de un pedido haciendo:

 Orders.find(1).user 

Espero que esto ayude.

EDITAR:

 Orders.find(ORDER_ID).user.update_attributes(:billing_id => BILLING_ID)