1

コントローラーのアクションでサービス オブジェクトを使用する Rails json API を作成しており、適切な json をレンダリングする必要があるサービスで起こったことに基づいています。例は次のようになります。

star_service.rb

class Place::StarService
  def initialize(params, user)
    @place_id = params[:place_id]
    @user = user
  end

  def call
    if UserStaredPlace.find_by(user: user, place_id: place_id)
      return #star was already given
    end

    begin
      ActiveRecord::Base.transaction do
        Place.increment_counter(:stars, place_id)
        UserStaredPlace.create(user: user, place_id: place_id)
      end
    rescue
      return #didn't work
    end

    return #gave a star
  end

  private

  attr_reader :place_id, :user
end

place_controller.rb

def star
  foo_bar = Place::Star.new(params, current_user).call

  if foo_bar == #sth
    render json: {status: 200, message: "sth"}
  elsif foo_bar == #sth
    render json: {status: 200, message: "sth"}
  else
    render json: {status: 400, message: "sth"}
end

私の質問は、サービス オブジェクトからプレーン テキストを返すべきか、それともより良い方法があるかということです。

4

1 に答える 1