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