我在连接两个表时遇到问题,我很困惑,所以我创建了一个新项目作为这个例子:http://guides.rubyonrails.org/association_basics.html#the-has_many-association我有两个表客户和订单。
我的模型
class Customer < ActiveRecord::Base
has_many :orders
attr_accessible :id, :name
end
class Order < ActiveRecord::Base
belongs_to :customer
attr_accessible :id, :count, :customer_id
end
在迁移订单表中,我引用了通过以下方式实现的客户表:
t.references :customer
我用一些样本数据填充表并运行这个有效的 sql 查询。
select * from customers inner join orders on customers.id = orders.customer_id;
然后我打开 Rails 控制台并运行此查询:
Customer.joins(:orders)
这只给我客户的结果,但我希望合并两个模型和适当的结果。当我运行时
Order.joins(:customer)
它只返回订单结果。
是否有检索两个模型合并结果的选项?谢谢你的建议:)
最佳答案
要访问客户的订单,请执行以下操作:
customers = Customer.joins(:orders)
customers.each do |customer|
customer.orders #<= contains orders for this customer
end
反之:
orders = Order.joins(:customer)
orders.each do |order|
order.customer #<= contains the customer
end
请注意,使用 joins
,您正在执行内部联接,因此排除没有订单的客户...如果您想包括他们,请使用 includes(:orders)
相反
https://stackoverflow.com/questions/13296013/