Заслуга перестает работать после создания второго пользователя с Devise - PullRequest
0 голосов
/ 19 мая 2018

У меня каверзная проблема с 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 за поддержку.

1 Ответ

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

После строки @user = build_resource в вашем контроллере добавьте @member = @user.Устройству нужно @user, пока вы настроены на поиск @member.

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