我有以下代码:subscribers = Subscriber.find(:all, :joins => :profile, :conditions => ['subscribers.active IS NULL'])
当我这样做时:puts subscribers.first.inspect
,我也应该看到个人资料信息,但我不是......这是模特协会
class Subscriber < ActiveRecord::Base
has_one :profile
has_many :medias
end
class Profile < ActiveRecord::Base
belongs_to :subscriber
end
我仍然习惯于习惯在MySQL中编写连接,所以我为这个邋iness道歉
答案 0 :(得分:2)
尝试:
subscribers = Subscriber.find(:all, :include => :profile, :conditions => ['subscribers.active IS NULL'])
然而,inspect不会考虑嵌套关系。您可以尝试to_yaml
:
puts subscribers.first.to_yaml
结果具有结构化且易于阅读,include
仅用于表现。
它在单个查询中从订户获取配置文件。
你也可以这样做:
puts Subscriber.where('active IS NULL').includes(:profile).first.to_yaml
通常,当您想通过连接关系列过滤数据时,应该使用连接。