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;并且用户没有被创建可能是什么问题?
答案 0 :(得分:1)
正如我在评论中所提到的,你必须告诉Devise你想使用自定义控制器进行注册,所以它知道不要使用它的默认行为。
由于你想限制用户公开注册,我认为(我没有测试过这个)你必须创建自己的自定义注册控制器,它与设计默认值一样,除非只是用户已登录...我不确定(非公开)注册完成后究竟发生了什么。原因Devise尝试自动登录 - 取决于您是否使用确认信息......但我的猜测是您以旧用户身份登出并以新用户身份登录...
为了给你指示,你应该阅读有关Configuring Controllers的自述文件部分。
然后你可以尝试简单地添加一个before_filter来验证自定义注册控制器中的用户(假设你的用户模型被称为User
):
class MyRegistrationsController < Devise::RegistrationsController
before_filter :authenticate_user!
end
但是又来了。我没有测试过这个......所以也许不是这样做的,但值得一试:)