0
有一个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查询中定义的结果相同的结果,或者如何获得与第一个SQL查询中定义的结果相同的结果?
谢谢!你知道ActiveRecord是否使用延迟加载,并因此有时可能会隐藏属性? – bodokaiser 2015-01-18 09:57:58
不客气!隐藏属性是什么意思?我相信懒惰加载发生在“渴望”加载。 – 2015-01-18 19:24:25