Ruby on rails 将ruby rails模型类转换为lib文件夹中的类
我有下面的model/Admin.rb类,我想将其提取并转换为lib/UserApi类。我不熟悉创建lib类并能够从控制器调用它们。谢谢你的建议Ruby on rails 将ruby rails模型类转换为lib文件夹中的类,ruby-on-rails,ruby,class,shared-libraries,Ruby On Rails,Ruby,Class,Shared Libraries,我有下面的model/Admin.rb类,我想将其提取并转换为lib/UserApi类。我不熟悉创建lib类并能够从控制器调用它们。谢谢你的建议 class Admin attr_accessor :id attr_accessor :firstname attr_accessor :lastname attr_accessor :usergroups def initialize json_attrs = {} @usergroups = [] unless json_att
class Admin
attr_accessor :id
attr_accessor :firstname
attr_accessor :lastname
attr_accessor :usergroups
def initialize json_attrs = {}
@usergroups = []
unless json_attrs.blank?
@id = json_attrs["id"]
@fname = json_attrs["fname"]
@lname = json_attrs["lname"]
@groups = json_attrs["groups"]
@authenticated = true
end
if json_attrs.blank?
@firstname = "blank"
end
end
def is_authenticated?
@authenticated ||= false
end
def in_groups? group_names
return !(@usergroups & group_names).empty? if group_names.kind_of?(Array)
@usergroups.include?(group_names)
end
def authenticate username, password
options={:basic_auth => {:username => CONFIG[:API_CLIENT_NAME],
:password => CONFIG[:API_CLIENT_PASSWORD]}}
api_response = HTTParty.get("#{CONFIG[:API_HOST]}auth/oauth2?username=#{username}&password=#{password}", options)
raise "API at #{CONFIG[:API_HOST]} is not responding" if api_response.code == 500 || api_response.code == 404
if api_response.parsed_response.has_key? "error"
return false
else
initialize(api_response.parsed_response["user"].select {|k,v| ["id", "fname", "lname", "groups"].include?(k) })
@authenticated = true
return true
end
end
def full_name
"#{@name} #{@name}"
end
结束
这是我目前在auth_控制器中使用的”
class Admin::AuthController
在lib目录中创建UserApi类:
# lib/user_api.rb
class UserApi
...
更新控制器:
class Admin::AuthController < Admin::BaseController
def auth
admin_user = UserApi.new
auth_result = admin_user.authenticate(params[:username], params[:password])
end
class Admin::AuthController
加载放在lib/目录中的类,以便在控制器中可以访问它们:
我通常创建一个config/initializers/00_requires.rb文件,并需要所需的lib文件
class Admin::AuthController < Admin::BaseController
def auth
admin_user = UserApi.new
auth_result = admin_user.authenticate(params[:username], params[:password])
end