设计无效的获取无效令牌

时间:2014-03-18 00:42:12

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

我正在使用Devise和Devise-invitable。但是,当我尝试接受邀请时,它表示令牌无效。关于如何保存令牌的新设计存在问题......我知道这导致了问题(https://github.com/scambra/devise_invitable/issues/402

但是,我不知道如何解决它。创建者说使用@token ...但我不知道如何获得@token。这个变量来自哪里?这是我到目前为止所做的:

class Users::InvitationsController < Devise::InvitationsController
  private

  def invite_resource
    resource_class.invite!(email: params['user']['email'], company_id: current_user.company.id) do |u|
      # skip sending emails on invite
      u.invited_by_id      = current_user.id
      u.invited_by_type    = 'User'
      u.skip_invitation    = true
      u.invitation_sent_at = Time.now
    end
  end

  def accept_resource
    debugger
    resource = resource_class.accept_invitation!(update_resource_params)
  end

以及我正在使用的链接:

= link_to 'Accept invitation', accept_invitation_url('user', :invitation_token => @token)

以前代替@token我使用的是invitation.invitation_token,但我猜这不是哈希版本?如何将正确的版本插入上述接受链接?

1 个答案:

答案 0 :(得分:0)

您的电子邮件链接看起来很好,因为邮件程序会生成@token。如果你像我一样,你可能会有一个无效的列类型。例如,在我的邀请上,invitation_created_at是错误的类型,因此我进行了迁移以将其更改为datetime:

class ChangeUsersInvitationCreatedAtToDatetime < ActiveRecord::Migration
  def change
    change_column :users, :invitation_created_at, :datetime
  end
end