Ruby on rails 3 使此ActiveRecord查找更高效

Ruby on rails 3 使此ActiveRecord查找更高效,ruby-on-rails-3,activerecord,Ruby On Rails 3,Activerecord,我想为某些服务类型的用户获取所有电子邮件地址的数组 使用字符串ActiveRecord有很多关系,我可以得到如下结果: affected_services = Service.where(service_type: 'black') affected_accounts = affected_services.map {|s| s.account} affected_emails = affected_accounts.map {|a| a.contact.email} 我知道这将是一个相当简单

我想为某些服务类型的用户获取所有电子邮件地址的数组

使用字符串ActiveRecord有很多关系,我可以得到如下结果:

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方法来检索这些结果?

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

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

不幸的是,
电子邮件
不是
帐户
的属性,
帐户
属于
联系人
联系人
有一个字段
电子邮件
。只需包含联系人,并映射其电子邮件属性即可。我编辑了我的答案,有帮助吗?