Devise - Пользовательские пользователи # новый метод - PullRequest
0 голосов
/ 19 марта 2012
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 %>

когда я пытаюсь отправить форму для создания нового пользователя, я получаю сообщение «Вы уже вошли в систему».а пользователь не создается, в чем может быть проблема?

1 Ответ

1 голос
/ 19 марта 2012

Как уже упоминалось в моем комментарии, вы должны сообщить Devise, что хотите использовать пользовательский контроллер для регистрации, чтобы он знал, что не следует использовать его поведение по умолчанию.

Поскольку вы хотите ограничить публичную регистрацию пользователей, я думаю (я не проверял это), вам нужно создать свой собственный настраиваемый контроллер регистрации, который выполняет то же самое, что и устройство по умолчанию, за исключением того, что пользователь уже вошел в систему ... Я не уверен, что именно происходит после (не публичной) регистрации. Причина Devise пытается войти в систему автоматически - в зависимости от того, используете ли вы подтверждаемый или нет ... Но я думаю, что вы вышли из системы как старый пользователь и вошли как новый ...

Таким образом, чтобы дать вам указания, вы должны прочитать раздел README, касающийся Настройка контроллеров . И тогда вы можете просто попытаться добавить before_filter для аутентификации пользователя в вашем контроллере пользовательских регистраций (при условии, что ваша пользовательская модель называется User):

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

Но снова. Я не проверял это ... так что, может быть, это не тот способ, но стоит попробовать:)

...