Я пытаюсь установить badge_rule для первого действия создания с именем «Выбор» (выбор продукта членами).
Правило:
приложение / модель / заслуги / badge_rules.rb
grant_on 'member/selections#create', badge: 'FirstSelection', to: :member do |selection|
selection.member.selections.count == 1
end
Контроллер «Выборы» находится в папке «member»: controllers / member / selections_controller.rb
В действии #create вот мое сообщение об ошибке:
Merit :: Action Load (0,4 мс) ВЫБЕРИТЕ "merit_actions". * FROM "merit_actions" ГДЕ "merit_actions". "Processing" = $ 1 [["processing", "f"]]
(0,2 мс) НАЧАТЬ
SQL (0,4 мс) ОБНОВЛЕНИЕ "merit_actions" SET "обработано" = $ 1, "updated_at" = $ 2 ГДЕ "merit_actions". "Id" = $ 3 [["обработано", "t"], ["updated_at", "2018- 05-07 09: 35: 24.776028 "], [" id ", 30]]
(0,5 мс) COMMIT
[заслуга] цель не найдена: неинициализированная константа Member :: Selection. /Users/youguild/.rbenv/versions/2.3.5/lib/ruby/gems/2.3.0/gems/merit-3.0.1/lib/merit/base_target_finder.rb:13:in `найти '
Выполнено 500 Внутренняя ошибка сервера в 211 мс (Просмотры: 2,8 мс | ActiveRecord: 134,4 мс)
NoMethodError (неопределенный метод `member 'для true: TrueClass):
app / models / merit / badge_rules.rb: 53: в `block in initialize '
Почему происходит ошибка и как ее устранить?
EDIT
Эта проблема была решена с помощью:
- Добавьте название модели в grant_on: имя_модели: 'Выбор' (в случае)
- Убедитесь, что переменная экземпляра имеет символ "@". Было 'selection = Selection.new (selection_params)' => '@selection = Selection.new (selection_params)'.