Mysql2 ::错误:where子句Rails中的未知列

时间:2017-10-24 05:07:41

标签: ruby-on-rails ruby

我收到错误

Mysql2::Error: Unknown column 'requests.access_level_id' in 'where clause': 
SELECT `requests`.* 
  FROM `requests` LEFT OUTER JOIN `users` ON `users`.`id` = `requests`.`from_id` 
  WHERE `requests`.`access_level_id` = 1 
  ORDER BY id DESC

模型

class Request < ApplicationRecord
  belongs_to :user, foreign_key: :from_id
end

控制器

@req = Request.left_outer_joins(:user).where(access_level_id: 1).order('id DESC')

如何从WHERE clause requests.access_level_id = 1删除请求?我只想让access_level_id = 1在where语句中。

2 个答案:

答案 0 :(得分:2)

根据您的要求,您可以添加没有requests的where子句,

@req = Request.left_outer_joins(:user).where('access_level_id = ?', 1).order('id DESC')

但是保持access_level_id的相对别名很好。如果是users,那么请使用它,

@req = Request.left_outer_joins(:user).where(users: { access_level_id: 1 }).order('id DESC')

答案 1 :(得分:0)

假设access_level_id是用户的字段,您可以使用以下内容替换您的查询:

@req = Request.left_outer_joins(:user).where('users.access_level_id = ?', 1).order('id  DESC')

默认情况下,条件被视为属于查询中的Request方法的字段。

希望这会对你有所帮助。 如果您遇到任何问题,请告诉我。