簡體   English   中英

進行聯接時使用update_all更新特定列

[英]Update specific column using update_all while doing joins

我有一個類似下面的關聯

用戶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引起:錯誤:關系“ users”的列“ can_view_details”不存在第1行:更新“ schema”。“ users” SET“ can_view_details” = ...

嘗試直接從模型中獲取權限,但要對用戶使用聯接:

Permission.
  joins(user: :roles).
  where('users.roles IN (?)', %w[admin sub_admin super_admin]).
  update_all(can_view_details: true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM