PDF de programación - Ruby on Rails avanzado

Imágen de pdf Ruby on Rails avanzado

Ruby on Rails avanzadográfica de visualizaciones

Publicado el 15 de Enero del 2017
3.719 visualizaciones desde el 15 de Enero del 2017
1,2 MB
198 paginas
Creado hace 18a (24/11/2005)
Ruby on Rails avanzado

Esteban Manchado Velázquez

[email protected]

24 de noviembre de 2005

Índice

1 MVC

Modelo
Vista
Controlador

2 Facilidades adicionales

Entornos
ActionMailer
Extensiones al lenguaje

3 Conclusiones

Lo bueno/lo malo
Consejos varios

Índice

1 MVC

Modelo
Vista
Controlador

2 Facilidades adicionales

Entornos
ActionMailer
Extensiones al lenguaje

3 Conclusiones

Lo bueno/lo malo
Consejos varios

Relaciones

• Los modelos están relacionados entre sí

Relaciones

• Los modelos están relacionados entre sí
• Hay varias relaciones definidas en Rails

Relaciones

• Los modelos están relacionados entre sí
• Hay varias relaciones definidas en Rails
• has many, belongs to, has and belongs to, etc.

Relaciones

• Los modelos están relacionados entre sí
• Hay varias relaciones definidas en Rails
• has many, belongs to, has and belongs to, etc.
• Declaración en los modelos, limpia y legible

Relaciones

• Los modelos están relacionados entre sí
• Hay varias relaciones definidas en Rails
• has many, belongs to, has and belongs to, etc.
• Declaración en los modelos, limpia y legible
• Convenciones para reducir al mínimo el código...

Relaciones

• Los modelos están relacionados entre sí
• Hay varias relaciones definidas en Rails
• has many, belongs to, has and belongs to, etc.
• Declaración en los modelos, limpia y legible
• Convenciones para reducir al mínimo el código...
• ...aunque todo se puede personalizar, claro

Relaciones

• Los modelos están relacionados entre sí
• Hay varias relaciones definidas en Rails
• has many, belongs to, has and belongs to, etc.
• Declaración en los modelos, limpia y legible
• Convenciones para reducir al mínimo el código...
• ...aunque todo se puede personalizar, claro
• También se pueden afinar las relaciones con condiciones

Relaciones: ejemplo

class Curso < ActiveRecord::Base

has_many :documentos
has_many :examenes, :class_name => ’Documento’,

:conditions => "tipo = ’examen’"
has_and_belongs_to_many :alumnos, :order => ’nombre’
belongs_to :temporada, :class_name => ’AnoAcademico’,

:foreign_key => ’curso_id’

end

Relaciones: ejemplo

class Curso < ActiveRecord::Base

has_many :documentos
has_many :examenes, :class_name => ’Documento’,

:conditions => "tipo = ’examen’"
has_and_belongs_to_many :alumnos, :order => ’nombre’
belongs_to :temporada, :class_name => ’AnoAcademico’,

:foreign_key => ’curso_id’

end

Relaciones: ejemplo

class Curso < ActiveRecord::Base

has_many :documentos
has_many :examenes, :class_name => ’Documento’,

:conditions => "tipo = ’examen’"
has_and_belongs_to_many :alumnos, :order => ’nombre’
belongs_to :temporada, :class_name => ’AnoAcademico’,

:foreign_key => ’curso_id’

end

Relaciones: ejemplo

class Curso < ActiveRecord::Base

has_many :documentos
has_many :examenes, :class_name => ’Documento’,

:conditions => "tipo = ’examen’"
has_and_belongs_to_many :alumnos, :order => ’nombre’
belongs_to :temporada, :class_name => ’AnoAcademico’,

:foreign_key => ’curso_id’

end

Relaciones: ejemplo

class Curso < ActiveRecord::Base

has_many :documentos
has_many :examenes, :class_name => ’Documento’,

:conditions => "tipo = ’examen’"
has_and_belongs_to_many :alumnos, :order => ’nombre’
belongs_to :temporada, :class_name => ’AnoAcademico’,

:foreign_key => ’curso_id’

end

Relaciones: ejemplo de uso

c = Curso.find(...)

c.documentos.each {|d| ...}
c.documentos.size
c.documento_ids = [1, 2, 3]

c.examenes.empty?
c.examenes << Documento.create(:tipo => ’examen’, ...)

c.alumnos.push_with_attributes(:reservado => true)

Relaciones: ejemplo de uso

c = Curso.find(...)

c.documentos.each {|d| ...}
c.documentos.size
c.documento_ids = [1, 2, 3]

c.examenes.empty?
c.examenes << Documento.create(:tipo => ’examen’, ...)

c.alumnos.push_with_attributes(:reservado => true)

Relaciones: ejemplo de uso

c = Curso.find(...)

c.documentos.each {|d| ...}
c.documentos.size
c.documento_ids = [1, 2, 3]

c.examenes.empty?
c.examenes << Documento.create(:tipo => ’examen’, ...)

c.alumnos.push_with_attributes(:reservado => true)

Relaciones: ejemplo de uso

c = Curso.find(...)

c.documentos.each {|d| ...}
c.documentos.size
c.documento_ids = [1, 2, 3]

c.examenes.empty?
c.examenes << Documento.create(:tipo => ’examen’, ...)

c.alumnos.push_with_attributes(:reservado => true)

Relaciones: ejemplo de uso

c = Curso.find(...)

c.documentos.each {|d| ...}
c.documentos.size
c.documento_ids = [1, 2, 3]

c.examenes.empty?
c.examenes << Documento.create(:tipo => ’examen’, ...)

c.alumnos.push_with_attributes(:reservado => true)

Relaciones: ejemplo de uso

c = Curso.find(...)

c.documentos.each {|d| ...}
c.documentos.size
c.documento_ids = [1, 2, 3]

c.examenes.empty?
c.examenes << Documento.create(:tipo => ’examen’, ...)

c.alumnos.push_with_attributes(:reservado => true)

Relaciones: ejemplo de uso

c = Curso.find(...)

c.documentos.each {|d| ...}
c.documentos.size
c.documento_ids = [1, 2, 3]

c.examenes.empty?
c.examenes << Documento.create(:tipo => ’examen’, ...)

c.alumnos.push_with_attributes(:reservado => true)

Validadores

• En general, se intentan mantener en el código

Validadores

• En general, se intentan mantener en el código
• Dos estrategias básicas: marcar campos o validación general

Validadores

• En general, se intentan mantener en el código
• Dos estrategias básicas: marcar campos o validación general
• Para el primer caso, tenemos varios métodos (de clase)

Validadores

• En general, se intentan mantener en el código
• Dos estrategias básicas: marcar campos o validación general
• Para el primer caso, tenemos varios métodos (de clase)
• Para el segundo podemos sobrecargar validate (de ejemplar)

Validadores

• En general, se intentan mantener en el código
• Dos estrategias básicas: marcar campos o validación general
• Para el primer caso, tenemos varios métodos (de clase)
• Para el segundo podemos sobrecargar validate (de ejemplar)
• En validate, añadimos los errores a errors

Validadores

• En general, se intentan mantener en el código
• Dos estrategias básicas: marcar campos o validación general
• Para el primer caso, tenemos varios métodos (de clase)
• Para el segundo podemos sobrecargar validate (de ejemplar)
• En validate, añadimos los errores a errors
• Podemos combinarlos, claro

Validadores: ejemplo

class Alumno < ActiveRecord::Base

validates_presence_of :num_socio
validates_inclusion_of :edad,

validates_exclusion_of :nombre,

:in => 18..100,
:message => "Dos rombos"

validates_format_of

end

:in => [’Pepito’, ’Juanito’],
:message => "Te odio"
:email,
:with => /^[\w\.]+@[\w\.]+$/

Validadores: ejemplo

class Alumno < ActiveRecord::Base

validates_presence_of :num_socio
validates_inclusion_of :edad,

validates_exclusion_of :nombre,

:in => 18..100,
:message => "Dos rombos"

validates_format_of

end

:in => [’Pepito’, ’Juanito’],
:message => "Te odio"
:email,
:with => /^[\w\.]+@[\w\.]+$/

Validadores: ejemplo

class Alumno < ActiveRecord::Base

validates_presence_of :num_socio
validates_inclusion_of :edad,

validates_exclusion_of :nombre,

:in => 18..100,
:message => "Dos rombos"

validates_format_of

end

:in => [’Pepito’, ’Juanito’],
:message => "Te odio"
:email,
:with => /^[\w\.]+@[\w\.]+$/

Validadores: ejemplo

class Alumno < ActiveRecord::Base

validates_presence_of :num_socio
validates_inclusion_of :edad,

validates_exclusion_of :nombre,

:in => 18..100,
:message => "Dos rombos"

validates_format_of

end

:in => [’Pepito’, ’Juanito’],
:message => "Te odio"
:email,
:with => /^[\w\.]+@[\w\.]+$/

Validadores: ejemplo

class Alumno < ActiveRecord::Base

validates_presence_of :num_socio
validates_inclusion_of :edad,

validates_exclusion_of :nombre,

:in => 18..100,
:message => "Dos rombos"

validates_format_of

end

:in => [’Pepito’, ’Juanito’],
:message => "Te odio"
:email,
:with => /^[\w\.]+@[\w\.]+$/

Validadores: otro ejemplo

class Alumno < ActiveRecord::Base

def validate(a)

errors.add_on_empty("num_socio")
errors.add("edad", "Muy joven") \

errors.add("email", "Dirección incorrecta") \

unless (18..100).include? a.edad

if a.email !~ /^[\w\.]+@[\w\.]+$/

end

end

Validadores: otro ejemplo

class Alumno < ActiveRecord::Base

def validate(a)

errors.add_on_empty("num_socio")
errors.add("edad", "Muy joven") \

errors.add("email", "Dirección incorrecta") \

unless (18..100).include? a.edad

if a.email !~ /^[\w\.]+@[\w\.]+$/

end

end

Validadores: otro ejemplo

class Alumno < ActiveRecord::Base

def validate(a)

errors.add_on_empty("num_socio")
errors.add("edad", "Muy joven") \

errors.add("email", "Dirección incorrecta") \

unless (18..100).include? a.edad

if a.email !~ /^[\w\.]+@[\w\.]+$/

end

end

Validadores: otro ejemplo

class Alumno < ActiveRecord::Base

def validate(a)

errors.add_on_empty("num_socio")
errors.add("edad", "Muy joven") \

errors.add("email", "Dirección incorrecta") \

unless (18..100).include? a.edad

if a.email !~ /^[\w\.]+@[\w\.]+$/

end

end

Validadores: otro ejemplo

class Alumno < ActiveRecord::Base

def validate(a)

errors.add_on_empty("num_socio")
errors.add("edad", "Muy joven") \

errors.add("email", "Dirección incorrecta") \

unless (18..100).include? a.edad

if a.email !~ /^[\w\.]+@[\w\.]+$/

end

end

Migraciones

• Expresan cambios en la base de datos

Migraciones

• Expresan cambios en la base de datos
• Sólo MySQL y PostgreSQL por ahora

Migraciones

• Expresan cambios en la base de datos
• Sólo MySQL y PostgreSQL por ahora
• Permiten actualizar fácilmente

Migraciones

• Expresan cambios en la base de datos
• Sólo MySQL y PostgreSQL por ahora
• Permiten actualizar fácilmente
• Son clases en ficheros independientes (en db/migrate)

Migraciones

• Expresan cambios en la base de datos
• Sólo MySQL y PostgreSQL por ahora
• Permiten actualizar fácilmente
• Son clases en ficheros independientes (en db/migrate)
• Se crean nuevas migraciones con

./script/generate migration NombreMigracion

Migraciones

• Expresa
  • Links de descarga
http://lwp-l.com/pdf1921

Comentarios de: Ruby on Rails avanzado (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad