Ruby on rails 3 如何将参数传递给exists子句?
我的模型中有以下方法: 问题在于SQL语句中的“security\u user\u id”没有正确“翻译”。它总是被解释为“0” 这是生成的SQL的简单输出,将“讲师”和“9”作为参数值传递:Ruby on rails 3 如何将参数传递给exists子句?,ruby-on-rails-3,activerecord,parameter-passing,exists,Ruby On Rails 3,Activerecord,Parameter Passing,Exists,我的模型中有以下方法: 问题在于SQL语句中的“security\u user\u id”没有正确“翻译”。它总是被解释为“0” 这是生成的SQL的简单输出,将“讲师”和“9”作为参数值传递: SecurityUser Exists (0.0ms) SELECT 1 AS one FROM security_users INNER JOIN security_users_manage_securities ON security_users_manage_securities.security
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子句以便与参数一起使用吗?我已经找到了它。为了在exists子句中传递参数,应使用如下数组:
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
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