我对“功德与设计”有一个棘手的问题。当一个成员创建一个帐户(第一个成员)时,他会得到一个徽章,正如下面的规则所示。非常适合他。
grant_on 'members/registrations#create', badge: 'WelcomeIn', model_name: 'Member'如果我为测试创建了log_out并创建了另一个成员,则会创建第二个成员,但在服务器日志中有一个回滚(参见下面)。然后其他的奖励规则将不适用于第二个成员,但功钢厂为第一个.
我真的不明白,整个下午都没有解决办法.
简单地解释一下,当它起作用时,我在日志中有:
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并为测试创建另一个成员。创建了这个成员,但是我在服务器日志中有一个回滚(见下面)。然后Merit停止为他工作(第二个成员),但是Merit为第一个.
我真的不明白,整个下午都没有解决办法.
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编辑与解决
如果您有一个名为“User”的Devise (就像我的成员),那么在Merit设置之后,您必须在Controller中添加一行(见下文)。
registrations_controller
class Members::RegistrationsController < Devise::RegistrationsController
# POST /resource
def create
@user = build_resource # Needed for Merit
@member = @user
super
end感谢@TuteC的支持。
发布于 2018-05-24 03:19:27
在控制器中的@user = build_resource行之后,添加@member = @user。设计需要@user,而您的优点配置为查找@member。
https://stackoverflow.com/questions/50428595
复制相似问题