0

私は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を使用していましたが、それはハッシュ化されたバージョンではないと思いますか? 上記の承認リンクに正しいバージョンを挿入するにはどうすればよいですか?

4

1 に答える 1

0

@tokenメーラーによって生成されたメールのリンクは正常に見えます。あなたが私のような人なら、無効な列タイプを持つことができます。たとえば、invitation_created_at のタイプが間違っていたので、移行して datetime に変更しました。

class ChangeUsersInvitationCreatedAtToDatetime < ActiveRecord::Migration
  def change
    change_column :users, :invitation_created_at, :datetime
  end
end
于 2014-05-27T15:57:36.057 に答える