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"})
很抱歉这长行代码的格式化