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)