1

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

我的印象是 UsersController 和 OrdersController 更新各自表的数据。这是否意味着如果我从 OrdersController 返回了一些东西,例如帐单 ID,没有其他方法可以将该帐单 ID 保存到 User 模型中的 billing_id 列中?感谢和抱歉,如果这是非常基本的。:)

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

4

1 回答 1

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)
于 2011-04-07T20:49:42.093 回答