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
places_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
我的問題是,我是否應該從服務對象返回純文本或有一些更好的辦法?
那麼,你是說我應該刪除服務和移動邏輯控制器? –
對不起,我重新考慮了一下這個答案並更新了它。不,你不需要刪除服務。服務就是生活!:)服務返回結果或錯誤。控制器的行爲(可能使用私有方法)會呈現結果,如果它不是「false」 – VAD