我有一个类似下面的关联
用户具有has_many个角色
用户具有has_one权限
表名 用户,角色和权限,并且它们在相同的架构和数据库下
我想获取角色admin,super_admin,sub_admin。并希望更新权限表中的列
User.joins(:roles,:permission).where('roles.name in (?)', ['admin', 'sub_admin', 'super_admin']).select("permissions.*").update_all('permission.can_view_details', true)
执行上面的查询给我错误。
由PG :: UndefinedColumn引起:错误:关系“用户”的列“ can_view_details”不存在 第1行:更新“模式”。“用户”设置“ can_view_details” = ...
答案 0 :(得分:2)
尝试直接从模型中获取权限,但要对用户使用联接:
Permission.
joins(user: :roles).
where('users.roles IN (?)', %w[admin sub_admin super_admin]).
update_all(can_view_details: true)