activerecord通过关联找到

我试图从我的数据库中检索一个activerecord对象。 我的模特是

class User  :account end 

 class Account < ActiveRecord::Base has_many :domains has_many :users end 

 class Domain < ActiveRecord::Base belongs_to :account end 

现在我想根据用户名和域名检索用户(假设这些是User和Domain类的属性)。 也就是说

 User.find(:first, :conditions =>{:username => "Paul", :domains => { :name => "pauls-domain"}}) 

我知道上面的代码不起作用,因为我必须提到有关表的一些内容。 此外,用户和域之间的关联是一对多的(这可能使事情进一步复杂化)。

关于如何形成这个查询的任何想法?

如果您使用的是Rails 3.x,则以下代码将获得查询结果:

 User.where(:username => "Paul").includes(:domains).where("domains.name" => "paul-domain").limit(1) 

要检查发生了什么,可以将.to_sql附加到上面的代码中。

如果你使用Rails 2.x,你最好编写原始的sql查询。

下面这段代码就是这样的:

 User.joins(:account).joins('INNER JOIN "domains" ON "accounts"."id" = \ "domains"."account_id"').where(:users => {"username" => "Paul"}). where(:domains => {"name" => "paul-domain"}) 

很抱歉这长行代码的格式化