Gem 方法在 Grape 中不可用 Api
Gem methods not available inside Grape Api
我目前正在使用 Grape 和 Rails 5 api 模式构建我的第一个 API,到目前为止一切顺利。我决定安装 Impressionist gem 以便能够记录某个模型(未来的 "popular" 页面)的查看次数,但我 运行 遇到了一个问题感觉我已经正确设置了 gem,但是用于实际记录数据库信息的 impressionist
方法未定义。
在我的模型中,gem 是这样初始化的 is_impressionable :counter_cache => true
然后我在app/api/my_app/my_model.rb
module MyApp
class MyModel < Grape::API
# GET /api/v1/model/:slug
desc "Returns a model record"
params do
requires :slug, type: String, desc: "Model slug", allow_blank: false
end
route_param :slug do
get do
my_model = MyModel.friendly.find(params[:slug])
impressionist(my_model)
present my_model, with: MyModelPresenter
end
end
end
end
登录activity但印象派方法未定义。我也尝试了 ImpressionistController::ClassMethods.impressionist
但没有成功。我还有其他 gems,如 friendly_id 和 will_paginate,它们与此设置开箱即用。我是否需要特定的东西?
看来印象派不支持Grape:
您可以手动使用它:
imp = Impression.new
imp.impressionable_type = object.class.to_s
imp.impressionable_id = object.id
imp.user_id = current_user.nil? ? 0 : current_user.id
imp.controller_name = "topics"
imp.action_name = "show"
imp.request_hash = Digest::SHA2.hexdigest(Time.now.to_f.to_s+rand(10000).to_s)
imp.ip_address = env['REMOTE_ADDR']
imp.session_hash = request.session_options[:id]
imp.referrer = request.referer
imp.save
https://github.com/charlotte-ruby/impressionist/issues/172#issuecomment-62844576
我目前正在使用 Grape 和 Rails 5 api 模式构建我的第一个 API,到目前为止一切顺利。我决定安装 Impressionist gem 以便能够记录某个模型(未来的 "popular" 页面)的查看次数,但我 运行 遇到了一个问题感觉我已经正确设置了 gem,但是用于实际记录数据库信息的 impressionist
方法未定义。
在我的模型中,gem 是这样初始化的 is_impressionable :counter_cache => true
然后我在app/api/my_app/my_model.rb
module MyApp
class MyModel < Grape::API
# GET /api/v1/model/:slug
desc "Returns a model record"
params do
requires :slug, type: String, desc: "Model slug", allow_blank: false
end
route_param :slug do
get do
my_model = MyModel.friendly.find(params[:slug])
impressionist(my_model)
present my_model, with: MyModelPresenter
end
end
end
end
登录activity但印象派方法未定义。我也尝试了 ImpressionistController::ClassMethods.impressionist
但没有成功。我还有其他 gems,如 friendly_id 和 will_paginate,它们与此设置开箱即用。我是否需要特定的东西?
看来印象派不支持Grape:
您可以手动使用它:
imp = Impression.new
imp.impressionable_type = object.class.to_s
imp.impressionable_id = object.id
imp.user_id = current_user.nil? ? 0 : current_user.id
imp.controller_name = "topics"
imp.action_name = "show"
imp.request_hash = Digest::SHA2.hexdigest(Time.now.to_f.to_s+rand(10000).to_s)
imp.ip_address = env['REMOTE_ADDR']
imp.session_hash = request.session_options[:id]
imp.referrer = request.referer
imp.save
https://github.com/charlotte-ruby/impressionist/issues/172#issuecomment-62844576