Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 4 设计可邀请-问题与获取用户/邀请/接受?邀请令牌=xxxx重新定向注册_Ruby On Rails 4_Devise_Devise Invitable - Fatal编程技术网

Ruby on rails 4 设计可邀请-问题与获取用户/邀请/接受?邀请令牌=xxxx重新定向注册

Ruby on rails 4 设计可邀请-问题与获取用户/邀请/接受?邀请令牌=xxxx重新定向注册,ruby-on-rails-4,devise,devise-invitable,Ruby On Rails 4,Devise,Devise Invitable,routes.rb ruby '2.1.2' rails (4.1.4) devise (3.2.4) devise_invitable (1.3.6) 用户/U控制器.rb devise_for :users, :controllers => { invitations: 'users/invitations' } 应用程序的每个部分都需要经过身份验证-除了接受用户邀请路径之外 我的应用程序控制器确实具有: accept_user_invitation GET

routes.rb

ruby '2.1.2'

rails (4.1.4)
devise (3.2.4)
devise_invitable (1.3.6)
用户/U控制器.rb

  devise_for :users,  :controllers => { invitations: 'users/invitations' }
应用程序的每个部分都需要经过身份验证-除了接受用户邀请路径之外

我的应用程序控制器确实具有:

        accept_user_invitation GET    /users/invitation/accept(.:format)         users/invitations#edit
        remove_user_invitation GET    /users/invitation/remove(.:format)         users/invitations#destroy
        user_invitation        POST   /users/invitation(.:format)                users/invitations#create
        new_user_invitation    GET    /users/invitation/new(.:format)            users/invitations#new
                               PATCH  /users/invitation(.:format)                users/invitations#update
                               PUT    /users/invitation(.:format)                users/invitations#update
class ApplicationController
不知道为什么这不起作用-有人愿意帮助我理解我做错了什么吗?每次我转到URL,我都会被重定向到注册


提前谢谢。我几乎准备好了自己滚

我明白了为什么Desive_invitable重新定向,那是因为邀请令牌不正确

当覆盖发送您自己的电子邮件的默认行为时

class ApplicationController < ActionController::Base
  before_action :authenticate_user!
end
看看代码:

有一个临时的原始\u邀请\u令牌,它是您的url和加密的邀请\u令牌所需的实际令牌。我得承认这里有些混乱

在url生成过程中,您必须使用的令牌是原始的\u邀请\u令牌,因为Desive\u invitable将解密此令牌:

当我发送电子邮件或生成链接时,此功能正常:

user = User.invite!(params) do |u|
  u.skip_invitation = true
  u.invitation_sent_at = Time.now
  u.invited_by_id = 1
  u.invited_by_type = 'User'
end
对URL使用
user.raw\u invitation\u令牌
,该过程将按预期工作


我已经要求改进文档并添加一个拉式请求-希望这对某人有所帮助

在筛选之前更改prepend\u如何:要求\u否\u身份验证,:only=>[:编辑,:更新,:销毁]在筛选之前跳过\u:身份验证\u用户@raykin,从Rails v2.3.8开始,在不推荐使用\u过滤器之前跳过\u请参见此处:。使用skip_筛选器仍然不起作用。然而,我正在尝试更多的过滤器-没有成功yetapidock是错误的,在过滤器没有被弃用之前跳过,我在我的rails 4.1.4项目中使用它,没有任何弃用警告。这是rails源代码中的文档。事实上,在rails4中,建议在\u操作之前比在\u过滤器之前进行更多操作。我检查了DeVICE::InvitationController中的一些源代码,我猜您的代码可能是此方法中的错误。您可以自己调试它,也可以自己创建邀请,这应该不会花费太多时间。感谢您查看@raykin,您通过深入查看代码间接帮助我解决了问题嘿,您将原始令牌代码放在哪里?在你看来?
user = User.invite!(params) do |u|
  u.skip_invitation = true
  u.invitation_sent_at = Time.now
  u.invited_by_id = 1
  u.invited_by_type = 'User'
end
# use the raw_invitation_token rather than invition_token
# when generating your links for the mailer
token = user.raw_invitation_token

puts "#{accept_user_invitation_url(::ActionMailer::Base.default_url_options.merge({:invitation_token => token})) }"