У меня каверзная проблема с Merit & Devise.Когда участник создает учетную запись (первый участник), он получает значок, как в приведенном ниже правиле.Прекрасно работает для него.
grant_on 'members/registrations#create', badge: 'WelcomeIn', model_name: 'Member'
Если я выйду из системы и создам другого участника для тестов, будет создан второй участник, но у меня будет откат в журнале сервера (см. Ниже).И тогда никакое другое правило заслуги не сработает для второго члена, а сталь заслуги - для первого ...
Я действительно не понимаю, день был потрачен на отсутствие решения ...
В кратком объяснении, когда он работает, у меня есть в журнале:
SQL (0.5ms) UPDATE "members" SET "sash_id" = $1, "updated_at" = $2 WHERE "members"."id" = $3 [["sash_id", 1], ["updated_at", "2018-05-19 17:15:30.716358"], ["id", 3]]
Когда это не работает, я получаю откат вместо строки выше:
(0.1ms) ROLLBACK
Я log_out и создаю другого участника для тестов.Член создан, но у меня есть Откат в журнале сервера (см. Ниже).И тогда Мерит перестает работать на него (второго члена), но Мерит работает на первого ...
Я действительно не понимаю, полдень был потрачен без решения ...
registrations_controller
class Members::RegistrationsController < Devise::RegistrationsController
# POST /resource
def create
@user = build_resource # Needed for Merit
super
if @member.persisted?
MemberMailer.send_welcome(@member).deliver_now
Notification.create!(category: "welcome", member: @member, topic: "Bienvenue sur MonApp !", checked: false)
end
end
РЕДАКТИРОВАТЬ И РЕШЕНИЕ
Если у вас есть модель Devise с именем, отличным от «Пользователь» (например, Member for me), вы должны добавитьстрока в вашем контроллере после настройки Merit doc (см. ниже).
registrations_controller
class Members::RegistrationsController < Devise::RegistrationsController
# POST /resource
def create
@user = build_resource # Needed for Merit
@member = @user
super
end
Спасибо @TuteC за поддержку.