我正在尝试在控制器中使用服务类。我无法弄清楚如何在Rails中引用其他类。这是我的users_controller
,位于app/controllers/api/v1
:
class Api::V1::UsersController < ApplicationController
respond_to :json
skip_before_filter :verify_authenticity_token
before_filter :initialize_user_service
def create
@service.create
render json: CustomResponse.new(
{
user: @service.user,
}
)
end
def initialize_user_service
@service = Services::UserService.new(user_params)
end
def user_params
params.permit(:email, :password, :password_confirmation, :first_name, :last_name)
end
end
我要引用位于app/services/users_service.rb
的users_service.rb
类。
class Services::UserService
attr_reader :session, :user
def initialize(params)
# @user_id = params[:id]
@params = params
end
def create
user = User.create(@params)
if user.save
return user
else
false
end
end
end
但是我在控制台中得到了以下错误:
NameError (uninitialized constant Api::V1::UsersController::Services):
有人知道我该怎么做才能访问这个类吗?我找不到解决方法。我想可能与我的 config/application.rb
文件有关,但我不确定。
services
目录是否包含在自动加载路径列表中。 - Aleksei Matiushkinapp/
中的所有子目录默认情况下都是自动加载的(不记得在Rails 4之前的行为)。我错了吗? - kiddorailsapp/services
而不仅仅是services
。无论如何,我已经点赞了。 - Aleksei Matiushkinuser_service.rb
。 - hermt2class Services::UserService
的方式创建类吗? - kiddorails