我一直在关注Ryan Boland优秀的Rails多租户教程,但是遇到了devise_invitable.我在用...
Rails 4.1.5
devise 3.3.0
devise_invitable 1.3.6
Postgresql
Run Code Online (Sandbox Code Playgroud)
我在选定的子域(mysubdomain.lvh.me:3000)上创建了一个新帐户和用户/帐户所有者,我可以从中发送用户邀请.我在隐身Chrome会话中打开邀请链接,以确保我没有登录或有任何当前会话.点击邀请链接后,我被重定向到登录页面(mysubdomain.lvh.me:3000/users/sign_in)并看到一个闪光通知:"提供的邀请令牌无效!"
我正在使用一个非常简单的邮件程序视图(app/views/devise/mailer/invitation_instructions.html.erb)...
<%= link_to 'Accept invitation', accept_invitation_url(@resource, :invitation_token => @token) %>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我保证的@token使用,如所描述这里.
创建邀请后,我确认邀请令牌已保存到数据库中(在本例中为hey@test.com - d1801fd8df78bd8cd125d5d8091fdc6a72c8f8faf4136cb282d497ec612195e9).我已经确认这符合接受请求时邀请查找的令牌(见下面的跟踪).但是,它会重定向到用户登录页面而不是完成注册,并且还会在跟踪日志中显示"过滤器链暂停为:resource_from_invitation_token呈现或重定向".在此交易之后,用户最终仍未确认.
关于我在这里可能出现什么问题的任何想法?我在下面包括日志,我的应用程序控制器和我的设计配置......
以下是邀请创建的跟踪日志:
Started POST "/users/invitation" for 127.0.0.1 at 2014-09-07 01:28:33 +0800
Processing by Devise::InvitationsController#create as HTML
Parameters: {"utf8"=>"?", "authenticity_token"=>"BiIQ95wwdQz3CJ0+OoLOE9xHHvxhloHsRHrxsqf1D2Q=", "user"=>{"email"=>"hey@test.com"}, "commit"=>"Invite User"}
User Load (4.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1
Account Load (0.4ms) SELECT "public"."accounts".* FROM "public"."accounts" WHERE "public"."accounts"."subdomain" = 'mysubdomain' LIMIT 1 …Run Code Online (Sandbox Code Playgroud) ruby-on-rails multi-tenant devise ruby-on-rails-4 devise-invitable