Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在用设计创建第二个用户后,优点不再起作用_Ruby On Rails_Devise_Merit Gem - Fatal编程技术网

Ruby on rails 在用设计创建第二个用户后,优点不再起作用

Ruby on rails 在用设计创建第二个用户后,优点不再起作用,ruby-on-rails,devise,merit-gem,Ruby On Rails,Devise,Merit Gem,我在优点和设计方面有一个棘手的问题。 当一个会员创建一个账户(第一个会员)时,他会得到一个徽章,如下规则所示。这对他很合适 grant_on 'members/registrations#create', badge: 'WelcomeIn', model_name: 'Member' 如果我注销并为测试创建另一个成员,则会创建第二个成员,但服务器日志中有一个回滚(见下文)。然后,第二个成员将不适用其他奖励规则,但第一个成员将适用奖励钢铁厂 我真的不明白,整个下午都没有解决方案 简而言之,当它

我在优点和设计方面有一个棘手的问题。 当一个会员创建一个账户(第一个会员)时,他会得到一个徽章,如下规则所示。这对他很合适

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
我注销并为测试创建另一个成员。成员已创建,但我在服务器日志中有一个回滚(请参见下文)。然后功绩不再为他(第二个成员)工作,但功绩为第一个成员工作

我真的不明白,整个下午都没有解决方案

注册\u控制器

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
class Members::RegistrationsController < Devise::RegistrationsController

  # POST /resource
  def create
    @user = build_resource # Needed for Merit
    @member = @user
    super
  end
类成员::注册控制器<设计::注册控制器
#员额/资源
def创建
@用户=构建资源#优点所需
超级的
如果@member.com持续存在?
MemberMailer。发送欢迎(@member)。立即发送
通知。创建!(类别:“欢迎”,成员:@member,主题:“Bienvenue sur MonApp!”,勾选:false)
终止
终止
编辑和解决方案 如果您有一个设计模型的名称不是“用户”(就像我的会员),您必须在优点文件设置后在控制器中添加一行(见下文)

注册\u控制器

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
class Members::RegistrationsController < Devise::RegistrationsController

  # POST /resource
  def create
    @user = build_resource # Needed for Merit
    @member = @user
    super
  end
类成员::注册控制器<设计::注册控制器
#员额/资源
def创建
@用户=构建资源#优点所需
@成员=@user
超级的
终止

感谢@TuteC的支持。

在控制器中的
@user=build\u resource
行之后,添加
@member=@user
。设计需求
@user
当您将优点配置为查找
@member

时,是否可以为优点配置添加代码示例,以及相关的控制器操作?您好@TuteC,我在下面添加了“编辑”。再次感谢您的回答;)