使此ActiveRecord查找更有效

时间:2013-11-18 09:11:37

标签: ruby-on-rails-3 activerecord

我希望获得某些服务类型用户的所有电子邮件地址数组。

使用一串ActiveRecord has_many关系,我可以这样得到:

affected_services = Service.where(service_type: 'black')
affected_accounts = affected_services.map {|s| s.account}
affected_emails = affected_accounts.map {|a| a.contact.email}

我知道这将是一个相当简单的SQL查询,但我更愿意看看ActiveRecord是否可以保持数据库抽象。

是否有良好的ActiveRecord方法来检索这些结果?

1 个答案:

答案 0 :(得分:1)

您可以使用:include在查询中包含子项。

Account.find(:all, :include => :contact, :conditions => {:service_id => Service.where(:service_type => 'black').map{|account| account.contact.email } })