无法在Grape Api中使用宝石方法

时间:2018-11-30 14:18:42

标签: ruby-on-rails ruby grape impressionist

我目前正在使用Grape和Rails 5 api模式构建我的第一个API,并且到目前为止进展情况还不错。我决定安装Impressionist gem,以便能够记录特定模型的视图计数(未来的“受欢迎”页面),但是我遇到了一个问题,我觉得我已经正确设置了gem,但是{未定义用于实际在数据库中记录信息的{1}}方法。

在我的模型中,宝石是这样impressionist

初始化的

然后我进入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 ,但没有成功。我还有其他的gems,例如friendly_id和will_paginate,它们在此设置下都可以很好地使用。我需要一些特定的东西吗?

1 个答案:

答案 0 :(得分:1)

印象派似乎不支持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