【问题标题】:Devise custom after confirmation action确认操作后设计自定义
【发布时间】:2018-05-08 10:33:03
【问题描述】:

从我自己的身份验证解决方案切换到 Devise,我正在尝试与我的邮件服务 Convertkit 集成。 我正在尝试在确认用户后让设计调用我的方法,但我不确定如何调用资源。

我尝试了这两种解决方案: https://stackoverflow.com/a/25336930/6848493 https://stackoverflow.com/a/16423638/6848493

这是我的用户模型:

class User < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable,
         :confirmable, :lockable, :lastseenable, :timeoutable

  validates :terms_and_privacy_policy,
            acceptance: { accept: true }, on: :create, allow_nil: false
  validates :first_name, presence: true
  validates :last_name, presence: true

  def confirm!
    super
    subscribe self
    self.send_convertkit_failure unless @ck_response_code == 200
  end

# Send email to admin in case of ConvertKit API failure
  def send_convertkit_failure
    UserMailer.convertkit_failure(self).deliver_now
  end

这是我的用户助手:

module UsersHelper
  def subscribe(user)
    response = HTTParty.post("https://api.convertkit.com/v3/forms/form/subscribe", 
      query: {email: user.email, first_name: user.name, course_opted: true, api_secret: 'my secret' })
    @ck_response_code = response.code
  end
end

没有错误消息,它确认用户没问题,但没有订阅 convertkit。我尝试了相同的代码,但使用了资源 作为对象,但会引发错误。

至于第二种方法(写入after_confirmation),错误提示用户已经被确认。

非常感谢您的意见,在此先感谢。

【问题讨论】:

  • 也许模型无法访问助手?试试this
  • 非常感谢@iGian,我尝试将其移至用户模型以消除任何可能出现的问题,同样的情况发生了 - 用户得到确认,convertkit 没有任何东西。有什么想法吗?
  • 也许你已经这样做了,但是.. 在subscribe 中放置一个调试方法(例如打印到控制台@ck_response_code),这样你就可以看到该方法是否被调用。尝试手动将查询发送到 convertkit,以测试代码。
  • @iGian 非常感谢您的帮助,我终于找到了罪魁祸首 :) 将发布我的工作代码作为答案。

标签: ruby-on-rails devise devise-confirmable


【解决方案1】:

终于在我的用户模型中实现了这个功能:

  # Override Devise::Confirmable#after_confirmation
  def after_confirmation
    subscribe self
    self.send_convertkit_failure unless @ck_response_code == 200
  end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多