diff --git a/app/controllers/v1/users_controller.rb b/app/controllers/v1/users_controller.rb index 29635892e47552bf442fd958691c679cfecfb787..93e825be09a9c2911e5af5d5a96eab80073365ac 100644 --- a/app/controllers/v1/users_controller.rb +++ b/app/controllers/v1/users_controller.rb @@ -3,6 +3,7 @@ class V1::UsersController < ApplicationController include ::DeletedObjectsController include ::Paginator include ::PublisherController + include ::SubjectableController before_action :set_user, only: [:show, :update, :destroy, :following, :own_reviews, :received_reviews, :followers] before_action :authenticate_user!, only: [:create, :update, :destroy, :following, :own_reviews, :received_reviews, :followers] @@ -37,6 +38,8 @@ class V1::UsersController < ApplicationController # PUT/PATCH /v1/users/1.json def update if @user.update(user_params) + user_associations(@user) + render json: @user, status: :ok else render json: @user.errors, status: :unprocessable_entity @@ -106,4 +109,14 @@ class V1::UsersController < ApplicationController role_ids: [] ) end + + def association_params + return {} if params[:user].nil? + params[:user].permit(subjects: []) + end + + def user_associations(user) + user.add_subjects(ids: association_params[:subjects]) unless association_params[:subjects].nil? + end + end diff --git a/app/models/user.rb b/app/models/user.rb index 78c538de8d02feafcc0adbed5ffdb4064c175709..7c59c1cc53feace93e2a2b69b25e984ba1816b32 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -37,6 +37,7 @@ class User < ApplicationRecord include Followable include Reputationable + include Subjectable include Tagger include Complainable include Publisher diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index 41d6a017da4c490f51799dbdb8f63a55f85d83be..a48a8f7de43757b6546ecfa99038aad720001fc2 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -28,4 +28,5 @@ class UserSerializer < ActiveModel::Serializer :collections_count, :created_at, :updated_at + has_many :subjects end