0

我想对我的用户模型运行查询,如下所示:

@user = User.find(:all, :conditions=>["u_org != c_org and u_org == ?", current_web.role.id])

这是运行查询的较旧样式,但效果不佳。你能帮我在rails 3中运行它吗?我试过了:

@user = User.where("u_org != c_org and u_org == ?", current_web.role.id).all

结果是[]。

更新:

我已==根据答案删除,但查询仍然返回[]。我只尝试过@user = User.find(:all, :conditions=>["u_org = ?", current_web.role.id])并且成功返回了值,但我希望它是@user = User.find(:all, :conditions=>["u_org != c_org and u_org = ?", current_web.role.id])

编辑:

样本数据:

u_org = 1

c_org = null

current_web.role.id = 1

4

2 回答 2

1

看起来不错,唯一的问题是您使用 double equals ==。尝试运行不正常的查询,如下所示:

@user = User.find(:all, :conditions=>["u_org != c_org and u_org = ?", current_web.role.id])

同样你的第二个如下:

@user = User.where("u_org != c_org and u_org = ?", current_web.role.id).all
于 2013-08-06T19:00:35.807 回答
0

我认为问题是因为 NULL,如果您希望所有用户c_org不等于 null 使用c_org IS NOT NULL并且等于c_orgnull 使用c_org IS NULL

@user = User.find(:all, :conditions=>["c_org IS NOT NULL and u_org = ?", current_web.role.id])

已编辑

@user = User.find(:all, :conditions=>["(u_org != c_org OR c_org IS NULL) and u_org == ?", current_web.role.id])
于 2013-08-07T11:09:02.923 回答