设计 - 自定义用户#new方法

时间:2012-03-19 13:17:15

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 devise

def new
     @title = "Create a user"
     @user = User.new
end

<%= form_for(@user) do |f| %>
  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email%>
  </div>
  <div class="field">
    <%= f.label :password %><br />
    <%= f.password_field :password %>
  </div>
  <div class="field">
    <%= f.label :password_confirmation, "Confirmation" %><br />
    <%= f.password_field :password_confirmation %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

当我尝试提交表单以创建新用户时,我收到一条消息&#34;您已经登录。&#34;并且用户没有被创建可能是什么问题?

1 个答案:

答案 0 :(得分:1)

正如我在评论中所提到的,你必须告诉Devise你想使用自定义控制器进行注册,所以它知道不要使用它的默认行为。

由于你想限制用户公开注册,我认为(我没有测试过这个)你必须创建自己的自定义注册控制器,它与设计默认值一样,除非只是用户已登录...我不确定(非公开)注册完成后究竟发生了什么。原因Devise尝试自动登录 - 取决于您是否使用确认信息......但我的猜测是您以旧用户身份登出并以新用户身份登录...

为了给你指示,你应该阅读有关Configuring Controllers的自述文件部分。 然后你可以尝试简单地添加一个before_filter来验证自定义注册控制器中的用户(假设你的用户模型被称为User):

class MyRegistrationsController < Devise::RegistrationsController
  before_filter :authenticate_user!
end

但是又来了。我没有测试过这个......所以也许不是这样做的,但值得一试:)