我有两个这样的模型:Task 与 Student 有两个关系,started_by 和 finished_by,它们都是 one_to_many 关系。
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'来自哪里,我应该如何解决这个问题?