0

我有 2 个模型:产品(名称、价格)和订单(用户 ID、产品 ID)

然后我想在 application_controller.rb 函数内部执行这个查询

SELECT * FROM orders INNER JOIN products ON orders.product_id = products.id

只有 ActiveRecord 和 Rails 关联才能做到这一点?我应该在模型中写什么?

4

2 回答 2

3

你的模型应该是这样的:

class Product < ActiveRecord::Base
  has_many :orders
end

class Order < ActiveRecord::Base
  belongs_to :product
  belongs_to :user
end

现在你可以这样做:

Order.joins(:product).all

但是你想达到什么目的?这种毫无意义的加入的原因是什么?如果您只想预加载产品以便对数据库没有任何其他查询,则可以使用includes而不是连接。

于 2013-10-25T11:16:00.357 回答
1

我怀疑你真的需要加入。尝试急切加载:

 Order.includes(:product)

顺便说一句,如果您想使用 Rails,也许您应该阅读文档。无意冒犯,但是您可以在 Rails 官方文档或在线大量 tuts 中找到有关此的所有信息。特别是,如果你是从 Rails 开始的,Michaels Hartl 会想到学习 Rails ( http://ruby.railstutorial.org/ )

于 2013-10-25T11:23:35.720 回答