Ruby on rails rails 3中的查询
我想在我的用户模型上运行一个查询,如下所示:Ruby on rails rails 3中的查询,ruby-on-rails,database,ruby-on-rails-3,Ruby On Rails,Database,Ruby On Rails 3,我想在我的用户模型上运行一个查询,如下所示: @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 != 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])
编辑:
样本数据:
组织=1
c_org=null
当前的_web.role.id=1看起来不错,唯一的问题是您使用了双等于
=
。请按以下方式尝试“不正常工作”查询:
@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
同样,你的第二个问题如下:
@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
我认为问题是因为空,如果你想让所有
c_组织
不等于空的用户使用c_组织不等于空
并且对于c_组织
equalt to NULL使用c_组织为空
@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])
你试过并且。。。?有一个错误,它没有返回预期的结果?你需要更具体一些。@MichaelSzyndel:我已经更新了我的问题。第一个查询也不起作用,请参阅vinodadhikary答案。它仍然是一样的。什么也没有发生。如果您得到
[]
作为回报,则执行查询时不会出现任何错误。你需要检查你的数据。您可以从只有一个返回记录的条件开始,然后应用另一个条件。我尝试了@user=user.find(:all,:conditions=>[“u_org=?”,2])
并返回值,但当我使用u_org=c_org
显示[],查看数据库表,u_org下有2个,c_org下为空。空值是否有作用?在SQL
中,您可以使用Is null
或Is NOT null
检查null
。=
和=
运算符不适用于NULL
@sushilthe,该查询应该可以正常工作。请在您的问题中发布一些示例数据。我想要u\u org!=c_组织
但c_组织的值为null@sushilthe:-检查我编辑的答案,我猜您希望拥有c_组织的用户为空,或者拥有c_组织的用户与u_组织不同