0

次のような 2 つのモデルがあります。Task には、Student との 2 つの関係 (started_by と finished_by) があり、どちらも一対多の関係です。

class Task < ActiveRecord::Base
    belongs_to :started_by, class_name: Student, foreign_key: 'started_by_student_id'
    belongs_to :finished_by, class_name: Student, foreign_key: 'finished_by_student_id'
    attr_accessible :name, :id
end

class Student < ActiveRecord::Base
    attr_accessible :name, :id

has_many :started_tasks, class_name: Task
has_many :finished_tasks, class_name: Task
end

のようにクエリすると

Task.joins(:started_by).all()

また

Task.joins(:started_by).all()

生成された SQL は良さそうです。しかし、私がするとき:

Task.joins(:started_by, :finished_by).all()

生成された SQL は奇妙に見えます。

  Task Load (0.5ms)  SELECT `tasks`.* FROM `tasks` INNER JOIN `students` ON `students`.`id` = `tasks`.`started_by_student_id` INNER JOIN `students` `finished_bies_tasks` ON `finished_bies_tasks`.`id` = `tasks`.`finished_by_student_id`

この「finished_bies_tasks」がどこから来たのかわかりません。どうすれば修正できますか?

4

1 に答える 1