0

我可能正在搜索错误的关键词,但我找不到一种方法来限制被邀请在我的 Rails 网站上创建帐户的用户(或者我可能使用了 devise-invitable 错误)。我认为,应该有一个我在 before 过滤器中调用的方法或翻转初始化器/devise.rb 上的开关

我尝试在我的users_controller.rb中使用 Ruby Doc 作为参考但没有运气

before_filter: invited?

我已经阅读了 initializers/devise.rb 和自述文件,但没有任何运气。

4

2 回答 2

1

我认为您应该为此目的制作自定义过滤器。

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
于 2014-12-05T18:26:28.123 回答
1

我发现我没有想到显而易见的事情。通过设计路由来限制用户,而不是设计邀请。

使用解决方案 #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.erbroutes.rb文件中的方法。

于 2014-12-05T18:37:35.333 回答