2014-12-05 63 views
0

我可能會搜索錯誤的關鍵字,但我找不到一種方法來限制被邀請被允許在我的rails站點上創建帳戶的用戶(或者可能我正在使用devise-invitable錯誤)。我認爲,應該有或翻轉的初始化/ devise.rb設計邀請 - 限制訪問只有受邀用戶

我在users_controller.rb嘗試,不得不使用Ruby文件沒有運氣reference

開關我在過濾器之前調用的方法
before_filter: invited? 

我已閱讀初始化程序/ devise.rb和自述文件,但沒有任何運氣。

回答

1

我想通了,我沒有想到明顯。通過設計限制用戶的路線,而不是設計 - 可邀請的。

使用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文件。

3

我認爲你應該爲此製作自定義過濾器。

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