我的模型中有以下方法:
def is_user_in_role (security_user_id, role) SecurityUser.joins(:security_users_roles) .where(security_users_roles:{role:role}) .exists?("security_users.id=#{security_user_id}") end
问题是 SQL 语句中的“security_user_id”未正确“翻译”。它总是被解释为“0”。
这是生成的 SQL 的简单输出,将“Instructor”和“9”作为参数值传递:
SecurityUser Exists (0.0ms) SELECT 1 AS one FROM security_users INNER JOIN security_users_manage_securities ON security_users_manage_securities.security_user_id = security_users.id INNER JOIN security_users_roles ON security_users_roles.id = security_users_manage_securities.security_users_role_id WHERE security_users_roles.role = 'Instructor' AND security_users.id = 0 FETCH FIRST ROW ONLY
你可以在最后看到:
security_users.id = 0
你能告诉我应该如何转换exists子句以便将它与参数一起使用吗?