我希望获得某些服务类型用户的所有电子邮件地址数组。
使用一串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方法来检索这些结果?
答案 0 :(得分:1)
您可以使用:include在查询中包含子项。
Account.find(:all, :include => :contact, :conditions => {:service_id => Service.where(:service_type => 'black').map{|account| account.contact.email } })