如何使用联接从两个表中获取单个查询所选元素

时间:2014-01-11 02:55:25

标签: ruby-on-rails ruby-on-rails-3.2

我(在Rails 3.2.13中):

class User < ActiveRecord::Base
  has_many :app_event_login_logouts
end

class AppEventLoginLogout < ActiveRecord::Base
   belongs_to :user
end

并希望得到类似的内容:

AppEventLoginLogoug.select("id, type, users.email").joins(:user)

基本上是id,来自app_event_login_logouts的类型和来自用户的电子邮件,但这似乎不起作用。什么是正确的语法?

2 个答案:

答案 0 :(得分:1)

尝试以下代码:

ret = User.joins(:app_event_login_logouts).select('app_event_login_logouts.id, app_event_login_logouts.type, users.email')
ret.first.id # will return app_event_login_logouts.id
ret.first.email # will return users.email
...

答案 1 :(得分:1)

AppEventLoginLogoug.find(:all, 
                         {:include => [:users],
                          :select => ['id', 'type', 'users.email']})

我还检查了apidoc,发现了类似的内容:

result= AppEventLoginLogoug.find(:all, 
                                 :conditions => ['condition_here'], 
                                 :joins => [:users], 
                                 :select => 'whatever_to_select'
                                 :order => 'your.order')