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)