Dim*_*ris 5 activerecord ruby-on-rails has-many-through
我试图从我的数据库中检索一个activerecord对象.我的模特是
class User < ActiveRecord::Base
belongs_to :account
has_many :domains, :through => :account
end
Run Code Online (Sandbox Code Playgroud)
和
class Account < ActiveRecord::Base
has_many :domains
has_many :users
end
Run Code Online (Sandbox Code Playgroud)
和
class Domain < ActiveRecord::Base
belongs_to :account
end
Run Code Online (Sandbox Code Playgroud)
现在我想根据用户名和域名检索用户(假设这些是User和Domain类的属性).也就是说
User.find(:first, :conditions =>{:username => "Paul", :domains => { :name => "pauls-domain"}})
Run Code Online (Sandbox Code Playgroud)
我知道上面的代码不起作用,因为我必须提到有关域表的一些内容.此外,用户和域之间的关联是一对多的(这可能使事情进一步复杂化).
关于如何形成这个查询的任何想法?
Kev*_*vin 13
如果您正在使用Rails 3.x,以下代码将获得查询结果:
User.where(:username => "Paul").includes(:domains).where("domains.name" => "paul-domain").limit(1)
Run Code Online (Sandbox Code Playgroud)
要检查发生了什么,您可以附加.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"})
Run Code Online (Sandbox Code Playgroud)
很抱歉这长串代码的格式
| 归档时间: |
|
| 查看次数: |
19194 次 |
| 最近记录: |