Rails从另一个模型的控制器更新一个模型中的数据

我有一个具有billing_id的用户模型。 我有订单模型,它使用支付网关运行交易,支付网关返回我想要保存到用户模型的billing_id列中的账单ID。 我想我将MVC架构的基础知识搞混了。

我的印象是UsersController和OrdersController更新了各自表的数据。 这是否意味着如果我从OrdersController返回了某些内容,例如结算ID,那么没有其他方法可以将该结算ID保存到用户模型的billing_id列中? 如果这是非常简陋的话,谢谢和抱歉。 🙂

另外,我认为可能的解决方案可能是以某种方式通过ApplicationsController将返回值传递给UsersController以保存到User表中。 这可能吗?

您的用户订单表应具有user_id实例,因为用户可以拥有多个订单。

您可以通过创建迁移来执行此操作:

rails g migration add_user_id_to_orders order_id:integer rake db:migrate 

您的模型将如下所示:

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

你需要在两者之间建立一个链接(order_id),否则他们就不会彼此了解。 这被称为外键。

当以这种方式设置事物时,您可以通过执行以下操作来获取用户:

 User.find(1).orders 

您可以通过执行以下操作从订单中找到用户信息:

 Orders.find(1).user 

我希望这有帮助。

编辑:

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