2
我有一个用户表是这样的:如何找到2条记录不条件在rails where子句中?
--------------------
| id | name | role |
--------------------
| ...| ... | ... |
--------------------
角色列有3种角色:管理员,买家和用户。下面约定:
role != 'buyer' and role != 'admin' ==> User is a normal user
(这意味着角色可以有值:无“”或曼尼不同的价值观,不同的“买家”和“管理员”)
role = 'buyer' ==> User is a buyer
role = 'admin' ==> User is an admin
现在,我想找到所有的用户在所有3个场景:
@admins = User.where(role: 'admin').all (work fine!)
@buyers = User.where(role: 'buyer').all (work fine!)
一切正常的用户,但这似乎不工作:
@users = User.where("role!='buyer' and role!='admin'").all (not working!)
任何人都可以帮我找到所有的普通用户吗?提前致谢!
我终于发现了问题,问题是,当角色列的值是零,我们无法找到该记录。但是,除了nil以外的角色列的值,我们可以找到它。 –
如果因为'''User.where.not(role:['buyer','admin'])'''等于'''WHERE角色!= buyer而存在nil值,Emu的解决方案就不会工作AND角色!= admin''',因为'''NULL!= any_string'''是虚假的'''unknown'''任何有nil值的记录都不会被返回 – user3409950
@ user3409950我必须改变我的代码以防止角色列中的无值,但无论如何Emu的解决方案帮助我的代码看起来更漂亮:)) –