Rails:两个“where”查询-每个单独工作,但不一起工作

3

我想写类似以下的内容:

@meeting_requests = Meeting.where('meeting_time >= ? AND requestee_id IS ? 
                                   AND status = ?', Date.today, nil, "Active")
                           .joins(:requestor)
                           .where('birthyear >= ? AND birthyear <= ?',
                                  current_user.birthyear - 10, 
                                  current_user.birthyear + 10 )

这个有效:

@meeting_requests = Meeting.where('meeting_time >= ? AND requestee_id IS ? 
                                   AND status = ?', Date.today, nil, "Active")

这个是有效的:

@meeting_requests = Meeting.joins(:requestor)
                           .where('birthyear >= ? AND birthyear <= ?',
                                   current_user.birthyear - 10,
                                   current_user.birthyear + 10 )

而像这样的东西是可行的:

Meeting.joins(:requestor).where('birthyear > ?', 1900).where(status: "Active")

但是我需要对会议时间进行大于查询,因此我需要将其写成字符串形式,是这样吗?

但是,两个SQL查询一起产生错误:ambiguous column name: status: SELECT

我感觉我离成功很近了...这里缺少什么?

1个回答

3

当不清楚该列来自哪个表时,会出现此消息。应该可以这样解决:

...rest_of_statement.where('meetings.status' => 'Active')

哇...这个有效了。为什么它知道meeting_time和requestee_id都与会议相关,但不是status?我看不出这些属性之间的区别。非常感谢!! - gwalshington
3
也许在“requestors”表中有一个“status”字段?这可能是导致问题的原因,因为通过连接两个表,您正在执行引用这两个表的查询语句。因此,如果请求“status”,不清楚您是指“requestors.status”还是“meetings.status”。 - Ruby Racer
哦,有趣!是的 - 用户有一个状态字段,请求者是用户的外键。谜团解决了...非常感谢!! - gwalshington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接