【发布时间】:2015-05-03 02:42:09
【问题描述】:
我有一个运行良好的查询:
@schedule = Schedule.find(params[:id])
@schedule_tasks = ScheduleTask.select("s.*, t.*, t.*, d.*, st.*").from("schedule_tasks st").
joins("left join schedules s ON s.id = st.schedule_id").
joins("left join tasks t ON t.id = st.task_id").
joins("right join days d ON d.id = st.day_id").
order("d.number, t.name").
group_by{|d| d.number}
我不得不将搜索细化为仅具有特定 schedule_id 的 schedule_tasks,因此我将第二行编辑为:
joins("left join schedules s ON s.id = st.schedule_id AND s.id = ?", @schedule.id).
这会导致以下错误:
unknown class: Fixnum
如果我取出 group_by,错误就会消失 - 但我需要它,我已经尝试用数字而不是 @schedule.id 进行硬编码,但这也不起作用,谷歌搜索没有显示很多有关此错误的详细信息。
【问题讨论】:
-
生成的查询是否正确,是否得到结果?
-
在我将 schedule_id 插入第 2 行之前,查询工作正常,但现在在查询期间失败。
-
@schedule = Schedule.find(params[:id)缺少] -
我认为您将“join”与“where”混合在一起...... where 子句应该与 join 子句分开。也许是
joins("left join schedules s ON s.id").where("s.id = ?", @schedule.id)的事件... -
我需要 join 的 where 子句,因为我需要整天返回。如果我执行单独的 where 子句,那么 days 表上的右连接将不再起作用。
标签: mysql ruby-on-rails fixnum