Reputation: 275
I receive an error of
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
Model
class Request < ApplicationRecord
belongs_to :user, foreign_key: :from_id
end
Controller
@req = Request.left_outer_joins(:user).where(access_level_id: 1).order('id DESC')
How can I remove requests from the WHERE clause requests.access_level_id = 1
? I just want access_level_id = 1
to be in the where statement.
Upvotes: 0
Views: 3602
Reputation: 717
Assuming that access_level_id
is field for user, you can replace your query with following:
@req = Request.left_outer_joins(:user).where('users.access_level_id = ?', 1).order('id DESC')
By default the fields in where conditions are considered to be belonging to Request method in your query.
Hope this helps you. Please let me know if you face any issue.
Upvotes: 0
Reputation: 3072
As you requested, you can add where clause without requests
as,
@req = Request.left_outer_joins(:user).where('access_level_id = ?', 1).order('id DESC')
But its good to keep relative aliasing for access_level_id. If its users
then please use it like,
@req = Request.left_outer_joins(:user).where(users: { access_level_id: 1 }).order('id DESC')
Upvotes: 2