Generación de Modelos y
Migraciones en Ruby on
Rails
Por: Elicia Córdova
@elioycor
MODELOMODELO
ACTIVE RECORDACTIVE RECORD
Generación del modelo User
> rails generate model User nombre:string email:string
invoke active_record
create db/migrate/[...
El Archivo user.rb
user.rbuser.rb
Archivo de nuestro
objeto de modelo user.
user.rbuser.rb
Archivo de nuestro
objeto de modelo user.
1 class User < ActiveRecord::Base
2 end
El Archivo user.rb
herenc...
El Archivo de Migración [timestamp]_create_users.rb
[timestamp]_create_users.rb
Archivo de migración que
servirá para escr...
1 class CreateUsers < ActiveRecord::Migration
2 def change
3 create_table :users do |t|
4 t.string :nombre
5 t.string :ema...
1 class CreateUsers < ActiveRecord::Migration
2 def change
3 create_table :users do |t|
4 t.string :nombre
5 t.string :ema...
Correr migraciones
> bundle exec rake db:migrate
== CreateUsers: migrating========================
-- create_table(:users)...
CRUD para el modelo User
$ rails console --sandbox
Loading development environment in sandbox (Rails 4.0.2)
Any modificati...
CRUD para el modelo User
> User.create(nombre: "Michael Acuña", email: "michi@hotmail.com")
=> #<User id: 3, nombre: "Mich...
> User.find(1)
=> #<User id: 1, nombre: “Elicia Cordova”, email: “elicia_cor@hotmail.com”, created_at:
"2014-02-16 00:57:4...
> user=User.find(1)
=> #<User id: 1, nombre: “Elicia Cordova”, email: “elicia_cor@hotmail.com”,
created_at: "2014-02-16 00...
> foo=User.find(3)
=> #<User id: 3, nombre: "Michael Acuña", email: " michi@hotmail.com ",
created_at: "2014-02-16 00:57:4...
1 class User < ActiveRecord::Base
2
3
4 end
Validando usuario
validates :nombre, presence: true
> user = User.new(nombre:"...
Validando tamaño
length: { maximum: 5 }
> user = User.new(nombre: "Elicia de los Angeles", email:
"elicia_cor@hotmail.com"...
Validando formato
length: { maximum: 5 }
> user = User.new(nombre: "Eli", email: "elicia_cor")
=> #<User id: nil, nombre: ...
Validando formato
length: { maximum: 5 }
> user = User.new(nombre: "Eli", email: "elicia_cor")
=> #<User id: nil, nombre: ...
@devcodela /devcode.la +devcode.la
Modelos y Migraciones en Ruby on Rails
Upcoming SlideShare
Loading in...5
×

Modelos y Migraciones en Ruby on Rails

461

Published on

Presentación del 3er capitulo del curso básico de Ruby on Rails para DEVCODELA, de Elicia Córdova (@elioycor)

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
461
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Modelos y Migraciones en Ruby on Rails

  1. 1. Generación de Modelos y Migraciones en Ruby on Rails Por: Elicia Córdova @elioycor
  2. 2. MODELOMODELO
  3. 3. ACTIVE RECORDACTIVE RECORD
  4. 4. Generación del modelo User > rails generate model User nombre:string email:string invoke active_record create db/migrate/[timestamp]_create_users.rb create app/models/user.rb invoke test_unit create test/models/user_test.rb créate test/fixtures/users.yml Modelos Migraciones
  5. 5. El Archivo user.rb user.rbuser.rb Archivo de nuestro objeto de modelo user.
  6. 6. user.rbuser.rb Archivo de nuestro objeto de modelo user. 1 class User < ActiveRecord::Base 2 end El Archivo user.rb herenciasingular plural
  7. 7. El Archivo de Migración [timestamp]_create_users.rb [timestamp]_create_users.rb Archivo de migración que servirá para escribir la estructura de la tabla users que vamos a crear en nuestra base de datos. YYYYMMDDHHMMSS_create_users.rb
  8. 8. 1 class CreateUsers < ActiveRecord::Migration 2 def change 3 create_table :users do |t| 4 t.string :nombre 5 t.string :email 6 t.timestamps 7 end 8 end 9 end plural El Archivo de Migración [timestamp]_create_users.rb [timestamp]_create_users.rb Proporcionan una manera de alterar la estructura de la base de datos incrementalmente, de manera que nuestro modelo de datos puede adaptarse a los requisitos cambiantes. created_at update_at
  9. 9. 1 class CreateUsers < ActiveRecord::Migration 2 def change 3 create_table :users do |t| 4 t.string :nombre 5 t.string :email 6 t.timestamps 7 end 8 end 9 end El Archivo de Migración [timestamp]_create_users.rb [timestamp]_create_users.rb Proporcionan una manera de alterar la estructura de la base de datos incrementalmente, de manera que nuestro modelo de datos puede adaptarse a los requisitos cambiantes. Campo creado para la clave primaria de la Tabla
  10. 10. Correr migraciones > bundle exec rake db:migrate == CreateUsers: migrating======================== -- create_table(:users) -> 0.0021s == CreateUsers: migrated (0.0024s) Migraciones
  11. 11. CRUD para el modelo User $ rails console --sandbox Loading development environment in sandbox (Rails 4.0.2) Any modifications you make will be rolled back on exit > user=User.new => #<User id: nil, nombre: nil, email: nil, created_at: nil, updated_at: nil> > user.nombre= "Elicia Cordova" > user.email="elicia_cor@hotmail.com" > user.save => true > user => #<User id: 1, nombre: “Elicia Cordova”, email: “elicia_cor@hotmail.com”, created_at: "2014-02-16 00:57:40", updated_at: "2014-02-16 00:57:40"> > user = User.new(nombre: "Maria Gonzales", email: "maria@hotmail.com") => #<User id: nil, nombre "Maria Gonzales", email: "maria@hotmail.com", created_at: nil, updated_at: nil> > user.save => true > user => #<User id: 2, nombre: "Maria Gonzales", email: "maria@hotmail.com", created_at: "2014- 02-16 00:57:46", updated_at: "2014-02-16 00:57:46"> CREAR
  12. 12. CRUD para el modelo User > User.create(nombre: "Michael Acuña", email: "michi@hotmail.com") => #<User id: 3, nombre: "Michael Acuña", email: " michi@hotmail.com ", created_at: "2014-02-16 00:57:48", updated_at: "2014-02-16 00:57:48> > foo = User.create(nombre: "Foo", email: "foo@bar.com") => #<User id: 4, nombre: "Foo", email: "foo@bar.com", created_at: "2014-02-16 00:57:50", updated_at: "2014-02-16 00:57:50> CREAR
  13. 13. > User.find(1) => #<User id: 1, nombre: “Elicia Cordova”, email: “elicia_cor@hotmail.com”, created_at: "2014-02-16 00:57:40", updated_at: "2014-02-16 00:57:40"> > User.find_by_email("elicia_cor@hotmail.com ") => #<User id: 1, nombre: “Elicia Cordova”, email: “elicia_cor@hotmail.com”, created_at: "2014-02-16 00:57:40", updated_at: "2014-02-16 00:57:40"> > User.find_by(email: " elicia_cor@hotmail.com ") => #<User id: 1, nombre: “Elicia Cordova”, email: “elicia_cor@hotmail.com”, created_at: "2014-02-16 00:57:40", updated_at: "2014-02-16 00:57:40"> > User.first => #<User id: 1, nombre: “Elicia Cordova”, email: “elicia_cor@hotmail.com”, created_at: "2014-02-16 00:57:40", updated_at: "2014-02-16 00:57:40"> > User.all => [#<User id: 1, nombre: “Elicia Cordova”, email: “elicia_cor@hotmail.com”, created_at: "2014-02-16 00:57:40", updated_at: "2014-02-16 00:57:40">, #<User id: 2, nombre: "Maria Gonzales", email: "maria@hotmail.com", created_at: "2014-02-16 00:57:46", updated_at: "2014-02-16 00:57:46">, #<User id: 3, nombre: "Michael Acuña", email: " michi@hotmail.com ", created_at: "2014-02-16 00:57:48", updated_at: "2014-02-16 00:57:48>, #<User id: 4, nombre: "Foo", email: "foo@bar.com", created_at: "2014-02-16 00:57:50", updated_at: "2014- 02-16 00:57:50>] READ
  14. 14. > user=User.find(1) => #<User id: 1, nombre: “Elicia Cordova”, email: “elicia_cor@hotmail.com”, created_at: "2014-02-16 00:57:40", updated_at: "2014-02-16 00:57:40"> > user.email = "elicia.cor@gmail.com" => "elicia.cor@gmail.com" > user.save => true > user.created_at => "2014-02-16 00:57:40" > user.updated_at => "2014-02-16 00:59:20" > user.update_attributes(nombre: "Mayra Villanueva", email: "mayra@hotmail.com") => true > user.nombre => " Mayra Villanueva " > user.email => "mayra@hotmail.com" UPDATE
  15. 15. > foo=User.find(3) => #<User id: 3, nombre: "Michael Acuña", email: " michi@hotmail.com ", created_at: "2014-02-16 00:57:48", updated_at: "2014-02-16 00:57:48> > foo.destroy > User.destroy_all DROP
  16. 16. 1 class User < ActiveRecord::Base 2 3 4 end Validando usuario validates :nombre, presence: true > user = User.new(nombre:"", email:"") => #<User id: nil, nombre:"", email:"", created_at: nil, updated_at: nil> > user.save => false > user.valid? => false > user.errors.full_messages => ["Nombre can't be blank", "Email can't be blank"] validates :email, presence: true
  17. 17. Validando tamaño length: { maximum: 5 } > user = User.new(nombre: "Elicia de los Angeles", email: "elicia_cor@hotmail.com") => #<User id: nil, nombre: " Elicia de los Angeles ", email: " elicia_cor@hotmail.com ", created_at: nil, updated_at: nil> > user.valid? => false > user.errors.full_messages => ["Nombre is too long (maximum is 5 characters)”] 1 class User < ActiveRecord::Base 2 3 4 end validates :nombre, presence: true, validates :email, presence: true
  18. 18. Validando formato length: { maximum: 5 } > user = User.new(nombre: "Eli", email: "elicia_cor") => #<User id: nil, nombre: " Eli", email: " elicia_cor", created_at: nil, updated_at: nil> > user.valid? => false > user.errors.full_messages => ["Email is invalid”] 1 class User < ActiveRecord::Base 2 3 4 5 end validates :nombre, presence: true, validates :email, presence: true VALID_EMAIL_REGEX = /A[w+-.]+@[a-zd-.]+.[a-z]+z/i , format: { with:VALID_EMAIL_REGEX }
  19. 19. Validando formato length: { maximum: 5 } > user = User.new(nombre: "Eli", email: "elicia_cor") => #<User id: nil, nombre: " Eli", email: " elicia_cor", created_at: nil, updated_at: nil> > user.valid? => false > user.errors.full_messages => ["Email is invalid”] 1 class User < ActiveRecord::Base 2 3 4 5 end validates :nombre, presence: true, validates :email, presence: true VALID_EMAIL_REGEX = /A[w+-.]+@[a-zd-.]+.[a-z]+z/i , format: { with:VALID_EMAIL_REGEX } /A[w+-.]+@[a-zd-.]+.[a-z]+z/i
  20. 20. @devcodela /devcode.la +devcode.la

×