设计邀请 - 限制访问只有受邀用户

问题描述:

我可能会搜索错误的关键字,但我找不到一种方法来限制被邀请被允许在我的rails站点上创建帐户的用户(或者可能我正在使用devise-invitable错误)。我认为,应该有或翻转的初始化/ devise.rb设计邀请 - 限制访问只有受邀用户

我在users_controller.rb尝试,不得不使用Ruby文件没有运气reference

开关我在过滤器之前调用的方法
before_filter: invited? 

我已阅读初始化程序/ devise.rb和自述文件,但没有任何运气。

我想通了,我没有想到明显。通过设计限制用户的路线,而不是设计 - 可邀请的。

使用Solution #2作为参考(见下文)

让我们假设你不希望允许注册,但要允许更改密码注册用户。只需粘贴在routes.rb中此代码:

devise_for :users, :skip => [:registrations]           
    as :user do 
     get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'  
     put 'users/:id' => 'devise/registrations#update', :as => 'user_registration'    
    end 

然后你就可以使你的观点,例如链接:

= link_to "Change your password", edit_user_registration_path 

注意:您将需要更新默认制定相应的观点,即在app/views/devise/registrations/edit.html.erb变化registration_path(resource_name)user_registration_path(resource)(如果使用多个型号共享视图,您可以使用send("#{resource_name}_registration_path", resource))

注意:如果使用的是4.0或以上版本,你应该使用补丁,而不是放有更新的轨道,则应该更换T中的方法他form_tag居住在app/views/devise/registrations/edit.html.erbroutes.rb文件。

我认为你应该为此制作自定义过滤器。

before_action :authenticate_user! 

before_filter :restrict_only_invited_users 

def restrict_only_invited_users 
    redirect_to :root if current_user.invitation_accepted_at.blank? 
end 
+0

谢谢!我可能会考虑适当的位置或与我的路线修复。 – AGirlThatCodes 2014-12-05 18:48:23

+0

再次感谢,我最终选择了设计方案。 – AGirlThatCodes 2014-12-08 17:33:42