如何在rails where子句中找到2条没有条件的记录?

时间:2015-12-22 03:24:44

标签: ruby-on-rails

我有一个像这样的用户表:

--------------------
| id | name | role |
--------------------
| ...| ...  | ...  |
--------------------

角色列有3种角色:Admin,Buyer和User。以下约定:

role != 'buyer' and role != 'admin' ==> User is a normal user

(这意味着角色可以有价值:nil,""或manny不同的值,除了'买家'管理员')

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! )

任何人都可以帮我找到所有普通用户吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

对于所有rails版本,

User.where('role NOT IN (?)', ['buyer', 'admin'])

如果您使用rails> = 4,

User.where.not(role: ['buyer', 'admin'])