В действии #create цель не найдена - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь установить 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

Эта проблема была решена с помощью:

  1. Добавьте название модели в grant_on: имя_модели: 'Выбор' (в случае)
  2. Убедитесь, что переменная экземпляра имеет символ "@". Было 'selection = Selection.new (selection_params)' => '@selection = Selection.new (selection_params)'.

1 Ответ

0 голосов
/ 08 мая 2018

Он переводит имя контроллера в название модели, но пространство имен контроллера равно Member. Попробуйте добавить опцию model_name: "Selection" в строку grant_on.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...