Part 4: Update GroupsController to enqueue background job
Update GroupsController#transfer to enqueue background job
Modify `app/controllers/groups_controller.rb` to enqueue async worker when feature flag enabled.
**Implementation Details:**
**Something like:**
```ruby
def transfer
parent_group = Group.find_by(id: params[:new_parent_group_id])
if Feature.enabled?(:groups_and_projects_async_transfer, @group)
@group.transfer_target_parent_id = parent_group&.id
@group.save!
if @group.start_transfer
Groups::TransferWorker.perform_async(
@group.id,
parent_group&.id,
current_user.id
)
flash[:notice] = "Group transfer has been queued. You'll be notified when it completes."
redirect_to group_path(@group)
else
flash[:alert] = "Unable to initiate transfer: #{@group.errors.full_messages.to_sentence}"
redirect_to edit_group_path(@group)
end
else
# Existing synchronous transfer logic
service = ::Groups::TransferService.new(@group, current_user)
if service.execute(parent_group)
flash[:notice] = "Group '#{@group.name}' was successfully transferred."
redirect_to group_path(@group)
else
flash[:alert] = service.error.html_safe
redirect_to edit_group_path(@group)
end
end
end
```
**Add/update specs in `spec/controllers/groups_controller_spec.rb`:**
- Async transfer enqueues worker (feature flag on)
- State transitions to transfer_in_progress
- Metadata stored
- Sync transfer works (feature flag off)
- Permission checks enforced
- State transition failures handled
**Acceptance Criteria:**
- [ ] Feature flag check works
- [ ] Async path enqueues worker
- [ ] Sync path unchanged
- [ ] Metadata stored before state transition
- [ ] Specs pass
issue