我有一个包含角色数组的用户模型。
u=User.first
u.roles = ['admin']
v=User.last
u.roles = ['admin', 'member']
如何查询以获取具有管理员角色的所有用户?
编辑:
roles
是用户模型的序列化数组
User
型号:
serialize :roles
迁移:
add_column :users, :roles, :string, default: []
答案 0 :(得分:1)
取决于"角色"的意思是:
如果是
中的关联class User < ActiveRecord::Base
has_many :roles
end
然后你查找角色并获取所有用户:
Role.find_by_name("admin").users
或者角色只是一个列并且是序列化的,在这种情况下,您可以实例化所有用户(慢)
User.all.select { |u| u.roles.include? "admin" }
或直接查询数据库,这更复杂,取决于适配器。
我的观点:当关系可以做时,我会避免使用序列化列。它们在各方面都很麻烦:形式,搜索,选择......