Gem методы недоступны в Grape Api - PullRequest
0 голосов
/ 30 ноября 2018

В настоящее время я создаю свой первый API с использованием Grape и API-интерфейса Rails 5, и до сих пор он работает довольно хорошо.Я решил установить гем Impressionist , чтобы можно было регистрировать количество просмотров определенной модели (будущая "популярная" страница), но я столкнулся с проблемой, когда мне кажется, что я правильно настроил гем, но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

для регистрации активности, но импрессионистский методне определено.Я пытался ImpressionistController::ClassMethods.impressionist также безуспешно.У меня есть другие драгоценные камни, такие как friendly_id и will_paginate, которые отлично работают из коробки с этой настройкой.Должен ли я требовать что-то конкретное?

1 Ответ

0 голосов
/ 30 ноября 2018

Кажется, что импрессионист не поддерживает виноград:

Вы можете использовать его вручную:

  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

...