【发布时间】:2018-07-07 01:52:10
【问题描述】:
在我的 Rails 应用程序中,我有一个用户、产品和订单表。用户可以在每个订单中购买多个产品。发生这种情况时,我将项目作为字符串存储在订单表的列 (product_id) 中。例如,如果用户购买了 3 种不同的产品,产品 id 将存储在我的订单表的 product_id 列中:product_id: "12, 97, 132"。
我将用户与订单相关联,例如用户has_many :orders 和订单belongs_to :user。对于每个用户,我想要做的是显示他们之前的订单以及该订单中包含的产品。通过关联,我可以轻松获得订单:@orders = current_user.orders.all 但是有没有办法将产品与订单关联起来,因为如果多个产品可以与一个订单关联?
现在,在我的订单模型中,我添加了一个 attr_accessor :products,在我的控制器中我有:
def orders
@orders = current_user.orders.all
@orders.each do |order|
items = Product.find(order.product_id.split(','))
order.products = items
end
end
这可行,但是如果参考列中存储了多个产品 ID,是否有一种“预构建”的方式来关联订单和产品?
【问题讨论】:
-
您应该避免将
<model_name>_id用于与(单个)关系ID 无关的任何内容。
标签: ruby-on-rails ruby