我发现我没有想到显而易见的事情。通过设计路由来限制用户,而不是设计邀请。
使用解决方案 #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))
注意:如果您使用的是 rails 4.0+,您应该使用 patch 而不是 put 进行更新。您应该更改驻留的 form_tagapp/views/devise/registrations/edit.html.erb
和routes.rb
文件中的方法。