【发布时间】:2015-01-17 12:40:40
【问题描述】:
有一个customer 表,其中有id、name 和email 列,还有一个address 表,其中有id、street、code、customer_id 列。
在 SQL 中,我使用以下方法加入两者:
SELECT c.id, c.name, c.email, a.street, a.code FROM customer AS c, address AS a WHERE a.customer_id = c.id;
在我建模的 Rails 中:
class Address < ActiveRecord::Base
self.table_name = 'address'
end
class Customer < ActiveRecord::Base
self.table_name = 'customer'
has_one :address
end
在我尝试过的控制器中:
-
Customer.joins(:address)=>SELECT customer.* FROM customer INNER JOIN address ON address.customer_id = customer.id -
Customer.includes(:address)=>SELECT customer.* FROM customer; SELECT address.* FROM address WHERE address.customer_id IN (1, 2)
但是两者都没有返回预期的结果。
如何获得与第一个 SQL 查询中定义的结果相同的结果,或者正确的方法是什么?
【问题讨论】:
标签: ruby-on-rails rails-activerecord