我有一个具有billing_id的用户模型。我有一个Order模型,它使用支付网关运行交易,该支付网关返回我想保存在User模型的billing_id列中的账单ID。我想我正在搞清楚MVC架构的基础知识。
我的印象是UsersController和OrdersController更新了各自表的数据。这是否意味着如果我从OrdersController返回了某些内容,例如结算ID,那么没有其他方法可以将该结算ID保存到用户模型的billing_id列中?谢谢,对不起,如果这是非常简陋的。 :)
另外,我认为一个可能的解决方案可能是以某种方式通过ApplicationsController将返回值传递给UsersController以保存到User表中。这可能吗?
答案 0 :(得分:1)
您的用户订单表应该有一个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)