2013-10-25 161 views
0

我有2种型号:产品(名称,价格)和(USER_ID,PRODUCT_ID)Rails的协会和ActiveRecord的

然后我想在application_controller.rb

SELECT * FROM orders INNER JOIN products ON orders.product_id = products.id 
执行内部功能,此查询

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

+0

您是否购物车模式? –

+0

对不起,粘贴错误的查询。 – droptheplot

回答

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而不是联接。

1

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

Order.includes(:product) 

Btw也许你应该阅读文档,如果你想要使用rails。没有冒犯性,但是你可以在官方的Rails文档或网上的大量内容中找到这方面的所有信息。尤其是,如果您开始使用Rails Michaels Hartl Learning Rails(http://ruby.railstutorial.org/