Pass IDs to Reaction usecases instead of user instances

For some wild reason this locally sometimes causes coercion errors in the user instance check, restarting fixes it (temporarily?) so letting the UseCase resolve users is a cleaner solution here.
This commit is contained in:
Andreas Nedbal 2024-03-19 22:06:57 +01:00 committed by Andreas Nedbal
parent b4cfc95c83
commit cc7fa787e8
3 changed files with 16 additions and 4 deletions

View File

@ -19,7 +19,7 @@ class ReactionsController < ApplicationController
target = target_class.find(params[:id])
UseCase::Reaction::Create.call(
source_user: current_user,
source_user_id: current_user.id,
target:,
)
@ -43,7 +43,7 @@ class ReactionsController < ApplicationController
target = target_class.find(params[:id])
UseCase::Reaction::Destroy.call(
source_user: current_user,
source_user_id: current_user.id,
target:,
)

View File

@ -3,7 +3,7 @@
module UseCase
module Reaction
class Create < UseCase::Base
option :source_user, type: Types.Instance(::User)
option :source_user_id, type: Types::Coercible::Integer
option :target, type: Types.Instance(::Answer) | Types.Instance(::Comment)
option :content, type: Types::Coercible::String, optional: true
@ -15,6 +15,12 @@ module UseCase
resource: reaction,
}
end
private
def source_user
@source_user ||= ::User.find(source_user_id)
end
end
end
end

View File

@ -3,7 +3,7 @@
module UseCase
module Reaction
class Destroy < UseCase::Base
option :source_user, type: Types.Instance(::User)
option :source_user_id, type: Types::Coercible::Integer
option :target, type: Types.Instance(::Answer) | Types.Instance(::Comment)
def call
@ -14,6 +14,12 @@ module UseCase
resource: nil,
}
end
private
def source_user
@source_user ||= ::User.find(source_user_id)
end
end
end
end