0

我有 3 个模型:RunnersJobsSurveysRunner模特has_many工作。Job模型has_one Survey。_ 我正在尝试获取跑步者的所有调查(与属于特定跑步者的工作相关的所有调查)。

这是我的模型

跑步者.rb

class Runner < ActiveRecord::Base
  has_many :jobs
end

工作.rb

class Job < ActiveRecord::Base
  belongs_to :runner
  has_one :survey
end

调查.rb

class Survey < ActiveRecord::Base
  attr_accessible :service, :speed, :suggestion, :job_id
  belongs_to :job
end

为了获得跑步者的所有工作,我打开了 rails 控制台并尝试运行这样的命令。

runner = Runner.first
joined_table = Job.joins(:survey)
joined_table.where(runner_id: runner.id)

看起来它输出了正确的 SQL,但是每当我运行joined_table 时,它​​所做的只是 return back Job.all。它不返回作业和调查的连接表。我还尝试了以下

joined_table = Job.all(:include => :survey)
joined_table = Job.all(:select => '*', :joins => :survey)
joined_table = Job.all(:joins => :assignment, :include => :survey)

这三个都不起作用

4

2 回答 2

1

试一试:

跑步者.rb

class Runner < ActiveRecord::Base
  has_many :jobs
  has_many :surveys, through: :jobs
end

进而

runner = Runner.first
runner.surveys
于 2013-06-25T21:44:46.657 回答
0

我相信你想要

Survey.joins(:job).where(jobs: { runner_id: runner.id })

这应该为您提供Survey属于相关跑步者的工作的所有对象。

于 2013-06-25T20:18:45.830 回答