Class PeopleController
In: app/controllers/people_controller.rb
Parent: ApplicationController

Controlador para el registro de usuarios de tipo Person

Methods

create   new   update   validate_field  

Public Instance methods

Creación de la cuenta

[Source]

    # File app/controllers/people_controller.rb, line 31
31:   def create
32:     @title = t('people.registro_nuevo', :name => t('site_name'))
33:     @user = Person.new(params[:user])
34:     @user.user_ip = request.remote_ip
35:     
36:     respond_to do |format|
37:       if @user.save
38:         cookies.delete :auth_token
39:         # protects against session fixation attacks, wreaks havoc with
40:         # request forgery protection.
41:         # uncomment at your own risk
42:         # reset_session
43:         # self.current_user = @user
44: 
45:         flash[:notice] = t('people.gracias_por_unirte')
46:         flash[:tracking] = "/#{I18n.locale}/registered"
47:         
48:         email = Notifier.create_activate_person_account(@user)
49: 
50:         begin
51:           logger.info("Mandando activacion a #{@user.email}")
52:           Notifier.deliver(email)
53:         rescue Net::SMTPServerBusy, Net::SMTPSyntaxError => err_type
54:           logger.info("Error al mandar mail de activacion: " + err_type)
55:           flash[:error] = t('session.Error_servidor_correo')
56:         end
57:         
58:         
59:         format.html { redirect_to(root_path) }
60:         format.xml  { render :xml => @user, :status => :created, :location => @user }
61:       else
62:         format.html { render :action => "new" }
63:         format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
64:       end
65:     end
66:   end

Formulario de registro

[Source]

    # File app/controllers/people_controller.rb, line 22
22:   def new
23:     @user = Person.new
24:     @title = t('people.registro_nuevo', :name => t('site_name'))
25:     # @title = I18n.t('people.registro_nuevo', :name => Notifier::SERVICENAME)
26:     # store_previous_location unless session[:return_to]
27:     @breadcrumbs_info = [[t('people.registro_nuevo', :name => Notifier::SERVICENAME), signup_path]]
28:   end

Actualización de los datos personales

[Source]

    # File app/controllers/people_controller.rb, line 69
69:   def update
70:     @person = Person.approved.find(current_user.id)
71:     if @person.update_attributes(params[:person])
72:       redirect_to account_path
73:     else
74:       render :template => '/account/edit'
75:     end
76:     
77:   end

"Live validation" de los campos de registro

[Source]

     # File app/controllers/people_controller.rb, line 80
 80:   def validate_field
 81:     if params[:type].eql?('Person')
 82:       user_attrs = ['email', 'password', 'password_confirmation', 'url', 'name', 'last_names']
 83:     elsif  params[:type].eql?('Journalist')
 84:       user_attrs = ['email', 'password', 'password_confirmation', 'media', 'url', 'name', 'last_names']
 85:     else
 86:       user_attrs = ['email', 'password', 'password_confirmation', 'telephone', 'name', 'last_names']
 87:     end
 88: 
 89:     user_params = params.dup.delete_if {|k, v| !user_attrs.include?(k)}
 90:     
 91:     render :update do |page|
 92:       if user_params.length > 0
 93:         u = params[:type].constantize.new(user_params)
 94:         u.valid?
 95:         user_params.each do |pk, pv|
 96:           if u.errors.on(pk)
 97:             page.select("#user_#{pk}_container span.error_message").each(&:remove)
 98:             page.insert_html :after, "user_#{pk}", content_tag(:span, u.errors.on(pk).to_a.join(' y '), :class => 'error_message')
 99:           else
100:             page.select("#user_#{pk}_container span.error_message").each(&:remove)
101:           end
102:         end
103:       end
104:     end
105:   end

[Validate]