Ruby on rails 3 使此ActiveRecord查找更高效
我想为某些服务类型的用户获取所有电子邮件地址的数组 使用字符串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} 我知道这将是一个相当简单
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 } })
不幸的是,
电子邮件
不是帐户
的属性,帐户
属于联系人
,联系人
有一个字段电子邮件
。只需包含联系人,并映射其电子邮件属性即可。我编辑了我的答案,有帮助吗?