Con esto se generaran los controladores Users y Sessions, el modelo User y una migración
que crea a la tabla users, la que modificaremos un poco para que al realizar la migración se
añada un campo que marque a un usuario si es administrador o es un usuario normal, y cree
por defecto un usuario administrador, este es código de la migración en
db/mígrate/xxxxxx_create_users.rb.
class CreateUsers < ActiveRecord::Migration
def self.up
create_table "users", :force => true do |t|
t.column :login, :string, :limit => 40
t.column :name, :string, :limit => 100
t.column :email, :string, :limit => 100
t.column :crypted_password, :string, :limit => 40
t.column :salt, :string, :limit => 40
t.column :created_at, :datetime
t.column :updated_at, :datetime
t.column :remember_token, :string, :limit => 40
t.column :remember_token_expires_at, :datetime
t.boolean :admin, :default => false
end
add_index :users, :login, :unique => true
admin = User.new(:name => '', :login => 'admin', :email => "
[email protected]",
:password => "admin123", :password_confirmation => 'admin123', :admin => true)
admin.admin = true
admin.save!
end
def self.down
drop_table "users"
end
end
Con esto creamos un usuario con login: ‘admin’ y password: ‘admin123’; tengamos en cuenta
que automáticamente valida que nuestra contraseña sea mayor a 6 caracteres, para que sea
administrador la asignación lo hacemos explicita, por que el modelo User como una medida de
seguridad, solo acepta como parámetros públicos los campos: login, email, name,
password y password_confirmation, y no otros, así no nos podrán inyectar código inseguro o
auto-asignarse como administradores.
Bien ahora realizamos la migración con rake db:mígrate o desde netbeans seleccionando
Migrate Database>To current versión.
Ahora tenemos que modificar unas cuantas líneas en los controladores, para esto abrimos los
archivos sessions_controller.rb y users_controller.rb, en estos borramos la línea
seleccionada en el dibujo y esta la copiamos tal cual dentro de controllers/application.rb.