我有 2 个模型:产品(名称、价格)和订单(用户 ID、产品 ID)
然后我想在 application_controller.rb 函数内部执行这个查询
SELECT * FROM orders INNER JOIN products ON orders.product_id = products.id
只有 ActiveRecord 和 Rails 关联才能做到这一点?我应该在模型中写什么?
我有 2 个模型:产品(名称、价格)和订单(用户 ID、产品 ID)
然后我想在 application_controller.rb 函数内部执行这个查询
SELECT * FROM orders INNER JOIN products ON orders.product_id = products.id
只有 ActiveRecord 和 Rails 关联才能做到这一点?我应该在模型中写什么?
你的模型应该是这样的:
class Product < ActiveRecord::Base
has_many :orders
end
class Order < ActiveRecord::Base
belongs_to :product
belongs_to :user
end
现在你可以这样做:
Order.joins(:product).all
但是你想达到什么目的?这种毫无意义的加入的原因是什么?如果您只想预加载产品以便对数据库没有任何其他查询,则可以使用includes
而不是连接。
我怀疑你真的需要加入。尝试急切加载:
Order.includes(:product)
顺便说一句,如果您想使用 Rails,也许您应该阅读文档。无意冒犯,但是您可以在 Rails 官方文档或在线大量 tuts 中找到有关此的所有信息。特别是,如果你是从 Rails 开始的,Michaels Hartl 会想到学习 Rails ( http://ruby.railstutorial.org/ )