0

RunnersJobs、およびの3 つのモデルがありSurveysます。Runnerモデルのおhas_many仕事。Jobモデルhas_one Survey。_ ランナーのすべての調査 (特定のランナーに属するジョブに関連付けられているすべての調査) を取得しようとしています。

ここに私のモデルがあります

runner.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です。Job と Survey の結合テーブルは返されません。私も次のことを試しました

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

これら3つのいずれも機能しません

4

2 に答える 2

1

試してみてください:

runner.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 に答える