mirror of
https://github.com/discourse/discourse.git
synced 2024-11-28 19:53:53 -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,6 +979,7 @@ class Group < ActiveRecord::Base
|
||||
/*where*/
|
||||
SQL
|
||||
|
||||
[:primary_group_id, :flair_group_id].each do |column|
|
||||
builder = DB.build(sql)
|
||||
builder.where(<<~SQL, id: id)
|
||||
id IN (
|
||||
@ -989,15 +990,17 @@ class Group < ActiveRecord::Base
|
||||
SQL
|
||||
|
||||
if primary_group
|
||||
builder.set("primary_group_id = :id")
|
||||
builder.set("#{column} = :id")
|
||||
builder.where("#{column} IS NULL") if column == :flair_group_id
|
||||
else
|
||||
builder.set("primary_group_id = NULL")
|
||||
builder.where("primary_group_id = :id")
|
||||
builder.set("#{column} = NULL")
|
||||
builder.where("#{column} = :id")
|
||||
end
|
||||
|
||||
builder.exec
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.automatic_membership_users(domains, group_id = nil)
|
||||
pattern = "@(#{domains.gsub('.', '\.')})$"
|
||||
|
@ -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