Пользовательский контроллер Devise - PullRequest
7 голосов
/ 11 января 2011

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

class AccountsController < Devise::SessionsController
  def create
    super
  end
end

Ну, это все очень хорошо. Но потом, скажем, я хочу полностью контролировать то, что происходит в моем #create действии. Как я могу это сделать? Как мне вручную создать модель и передать ей все параметры? Будет ли Account.create (params [: account]) обрабатывать это гладко? Происходят ли какие-то внутренние события, о которых я должен знать, или я могу позвонить #super внутри действия?

Ответы [ 2 ]

5 голосов
/ 11 января 2011

Пока вы заполняете обязательные поля, вы можете вызывать Account.create в своем примере, я уверен, что обязательными полями Devise по умолчанию являются логин, пароль и password_confirmation

Мы делаем это на экране CRUD для создания пользовательских устройств,

@admin = Admin.new(params[:admin])
if @admin.save
  redirect_to admin_admins_path, :notice => 'New Administrator has been added'
else
  render :action => "new"
end

и вы не хотите расширять контроллер сеанса Devise, нормальный контроллер расширяет ApplicationController, или вы можете расширить Devise :: RegistrationsController и переписать методы, которые вы хотите настроить в registrations_controller.rb файле

1 голос
/ 21 августа 2011

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

https://github.com/plataformatec/devise/tree/master/app/controllers

...