Más contenido relacionado Similar a Modelos y Migraciones en Ruby on Rails (20) Modelos y Migraciones en Ruby on Rails5. 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
8. 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
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
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
10. 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
11. Correr migraciones
> bundle exec rake db:migrate
== CreateUsers: migrating========================
-- create_table(:users)
-> 0.0021s
== CreateUsers: migrated (0.0024s)
Migraciones
12. 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
13. 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
14. > 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
15. > 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
16. > 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
17. 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
18. 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
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 }
20. 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