ruby-on-rails - 在 rails 3 中连接两个表

我在连接两个表时遇到问题,我很困惑,所以我创建了一个新项目作为这个例子: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/

相关文章:

google-chrome - "Extension Install Failure: Packag

php - 在 foreach 循环中使用数组变量

sql - 当一个值为 null 时未拾取不匹配

python - 将 Python 正则表达式用于 Twitter 数据

python - 从 `scipy.ndimage.map_coordinates` 输出向量/数组

c# - 将 DependencyProperty 转发到用户控件中包含的控件

.net - 即使所有新发布者都有签名证书,未知发布者警告是否真的会出现?

php - Wordpress wp_editor 不更新文本区域 $_POST 数据

php - Wordpress 主题选项不会保存

.net - 如果我有一个返回不同列表的方法,我应该让它返回 ISet 而不是 IEnumer