Rails ActiveRecord加入问题

时间:2011-01-18 19:59:03

标签: ruby-on-rails-3 activerecord

我有以下代码: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道歉

1 个答案:

答案 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

通常,当您想通过连接关系列过滤数据时,应该使用连接。