我正在使用 rails 4.2.1 处理复杂的 SQL 查询
def self.proofreader_for_job(job)
User.find_by_sql(
"SELECT * FROM users
INNER JOIN timers
ON users.id = timers.proofreader_id
INNER JOIN tasks
ON tasks.id = timers.task_id
WHERE tasks.job_id = #{job.id}")
end
我的模式是(jobs has_many tasks, tasks has_many timers, and a timer belongs_to a user(role: proofreader) 通过外键proofreader_id)
问题是当我调用该方法时,它返回的是正确用户的电子邮件和属性,但 id 不匹配。
例如 User.proofreader_for_job(job) 返回
[#<User id: 178, email: "testemail@gmail.com">]
testemail@gmail.com 是正确的电子邮件,但我的数据库中没有 id 为 178 的用户。
User.all 只是返回
[#<User id: 12, email: "fakeemail@gmail.com">,
#<User id: 11, email: "testemail@gmail.com">]
我在我的 rspec 测试中注意到了这个问题,但它发生在开发和测试环境中。
有谁知道为什么我的方法会返回具有如此高 id 的用户。这是按设计完成的,如果是,为什么?
谢谢你。