mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 02:11:08 -06:00
FIX: update flair group of all members if primary group setting changed. (#14762)
Previously, if we enable the `primary_group` setting on a group then the `flair_group_id` of its' members are not affected.
This commit is contained in:
parent
c62242c6b3
commit
deee715a2c
@ -979,23 +979,26 @@ class Group < ActiveRecord::Base
|
||||
/*where*/
|
||||
SQL
|
||||
|
||||
builder = DB.build(sql)
|
||||
builder.where(<<~SQL, id: id)
|
||||
id IN (
|
||||
SELECT user_id
|
||||
FROM group_users
|
||||
WHERE group_id = :id
|
||||
)
|
||||
SQL
|
||||
[:primary_group_id, :flair_group_id].each do |column|
|
||||
builder = DB.build(sql)
|
||||
builder.where(<<~SQL, id: id)
|
||||
id IN (
|
||||
SELECT user_id
|
||||
FROM group_users
|
||||
WHERE group_id = :id
|
||||
)
|
||||
SQL
|
||||
|
||||
if primary_group
|
||||
builder.set("primary_group_id = :id")
|
||||
else
|
||||
builder.set("primary_group_id = NULL")
|
||||
builder.where("primary_group_id = :id")
|
||||
if primary_group
|
||||
builder.set("#{column} = :id")
|
||||
builder.where("#{column} IS NULL") if column == :flair_group_id
|
||||
else
|
||||
builder.set("#{column} = NULL")
|
||||
builder.where("#{column} = :id")
|
||||
end
|
||||
|
||||
builder.exec
|
||||
end
|
||||
|
||||
builder.exec
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -198,12 +198,19 @@ describe Group do
|
||||
end
|
||||
|
||||
describe '#primary_group=' do
|
||||
it "updates all members' #primary_group" do
|
||||
before do
|
||||
group.add(user)
|
||||
end
|
||||
|
||||
it "updates all members' #primary_group" do
|
||||
expect { group.update(primary_group: true) }.to change { user.reload.primary_group }.from(nil).to(group)
|
||||
expect { group.update(primary_group: false) }.to change { user.reload.primary_group }.from(group).to(nil)
|
||||
end
|
||||
|
||||
it "updates all members' #flair_group" do
|
||||
expect { group.update(primary_group: true) }.to change { user.reload.flair_group }.from(nil).to(group)
|
||||
expect { group.update(primary_group: false) }.to change { user.reload.flair_group }.from(group).to(nil)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#title=' do
|
||||
|
Loading…
Reference in New Issue
Block a user