Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 根据作为数组的字段的值查询where_Ruby On Rails_Arrays_Rails Activerecord - Fatal编程技术网

Ruby on rails 根据作为数组的字段的值查询where

Ruby on rails 根据作为数组的字段的值查询where,ruby-on-rails,arrays,rails-activerecord,Ruby On Rails,Arrays,Rails Activerecord,我有一个类用户,其字段权限是数组 t.text "permissions", default: [], array: true 数组权限可以有一个或多个字符串admin、guest和editor 如何编写where查询来检索具有特定权限的所有用户,比如编辑器?我想在我的控制器中执行此操作。如果您使用的是SQL数据库: User.where('permissions like ?', "%editor%") 假设您使用的是PostgreSQL,则使用: 9.23.3。任意/某些数组 表达

我有一个类用户,其字段权限是数组

t.text  "permissions",  default: [],  array: true
数组权限可以有一个或多个字符串admin、guest和editor


如何编写where查询来检索具有特定权限的所有用户,比如编辑器?我想在我的控制器中执行此操作。

如果您使用的是SQL数据库:

User.where('permissions like ?', "%editor%")

假设您使用的是PostgreSQL,则使用:

9.23.3。任意/某些数组

表达式运算符任何数组表达式 表达式运算符某些数组表达式

右边是一个带括号的表达式,它必须生成一个数组值。使用给定的运算符对左侧表达式求值并与数组的每个元素进行比较,该运算符必须生成布尔结果

使用x=anysome_数组是检查x是否等于某个_数组的任何元素的一种方便方法,因此您可以说:

User.where(':permission = any(permissions)', :permission => your_permission)
你也可以使用


数组[…]语法是在PostgreSQL中构建数组文本的一种方便方法,无需担心引用问题过多。

我想在我的控制器中执行此操作。很抱歉,我已更新了答案,因为它有错误。
User.where('permissions && array[?]', your_permission)