Rails y las fechas
Visita este artículo en http://www.estadobeta.com/2007/06/20/rails-y-las-fechas/
Por Ismael en Desarrollo, Ruby & Rails, artículos, tipsAdemás de la arquitectura MVC que pone todo en su lugar, Rails incluye ActiveSupport, un módulo con extensiones varias a las clases nativas de Ruby como Array, Time y Date. Esto permite expresar calculos de fechas y tiempos en lenguaje casi natural.
-
-
ayer = Time.now - 1.day # => Tue Jun 19 17:11:20 CLT 2007
-
Lo mejor de todo es la integración de las extensiones de Time con ActiveRecord. El siguiente ejemplo me devuelve todos los Posts publicados hace menos de 30 días.
-
-
posts_recientes = Post.find( :all, :conditions=>["published_on > ?", Time.now - 30.days] )
-
Pero la belleza no termina ahí! ¿Para qué restar y sumar fechas si Rails también pensó en esas operaciones comunes?
-
-
posts_recientes = Post.find( :all, :conditions=>["published_on > ?", 30.days.ago] )
-
30.days.ago retorna un objeto Time con la fecha indicada. Al usarlo en el contexto de una sentencia SQL, ActiveRecord lo interpreta convenientemente como una fecha de tipo Datetime, apta para ser usada en un SELECT SQL.
Si eso no es un framework bien pensado, no se lo que es.
- Servicios:
- Comentarios RSS
- Menear!
- Del.icio.us

6/21/2007 at 10:53 am
Asi es, es un framework muy potente. El problema es el tema de la localización y traducción de las aplicaciones. Si alguien tiene experiencia en ese tema… nos cuenta?
6/21/2007 at 1:54 pm
RoD, yo he usado el Localization Plugin para Rails. Muy fácil de usar. Básicamente defines un dccionario para cada idioma en un archivo de configuración. El plugin crea un método <%=_”Hola”%> para las vistas (fíjate en el guión bajo) que reemplaza la palabra por su equivalente en el idioma actual (el idioma lo seleccionas en el controlador, o lo guardas en la base de datos).
En el archivo README del plugin hay instrucciones y ejemplos.
10/2/2007 at 12:08 am
Gracias!
muy útil la información
11/29/2007 at 2:15 pm
Isamel, siguiendo tu ejemplo probé lo siguiente pero no me funciona. La estoy viendo complicada con la sintaxis de Ruby.
@score = Score.find(:all, :conditions => {[”time > ?”, Time.today], :order => “points DESC”)
Y esto si me funciona
@score = Score.find(:all, :conditions => {:game_id => games.id, :order => “points DESC”)
11/30/2007 at 2:47 am
Ivan, a ver si esto te puede clarificar el tema de la sintaxis.
En el metodo “find”, para especificar las condiciones puedes usar un arreglo “[]” o un hash “{}” … (o un string)
Usas un hash “{}” cuando las condiciones son de igualdad o de rango
@score = Score.find(:all, :conditions => {:game_id => games.id}, :order => “points DESC”)
Cuando las condiciones son distintas a las anteriores (”mayor que”, etc), entonces usas un arreglo “[]”
@score = Score.find(:all, :conditions => [”time > ?”, Time.today], :order => “points DESC”)
http://dev.rubyonrails.org/browser/trunk/activerecord/lib/active_record/base.rb
Linea 91 !
11/30/2007 at 6:21 am
Ivan: tal cual dice Rodrigo. En tu primer ejemplo estas usando un array dentro de un hash, cuando basta con un array.
@score = Score.find(:all, :conditions => [”time > ?”, Time.today], :order => “points DESC”)
Te sobra un “{”.
Te recomiendo que abras una consola IRB (tipeas “irb” en tu consola) y ensayes las diferencias entre un Hash y un Array, para entenderlos bien. COn la documentacion abierta al lado.
11/30/2007 at 3:25 pm
Muchas gracias… ahora mismo voy a tratar de entender bien eso.
Y está genial saber que existe el sitio chileonrails.cl.
6/22/2008 at 11:52 pm
aki tengo una duda con respecto al .find quiero saber si es que se puede enviarle como parametro una subcadena y si es que tiene como no c el funcionamiento del LIKE de SQL que me busque la subcadena completa o parte de esta ??
6/23/2008 at 4:11 pm
Fernando, find_by_sql recibe una sentencia arbitraria de SQL y la ejecuta, pero si quieres mantener la independencia de tu base de datos, find tambien acepta parametros como :join, :include, :limit, :order, etc.
Ve los detalles en la documentacion de ActiveRecord.
6/28/2008 at 8:18 pm
Hola a todos!!!
Necesito calcular en ruby la cantidad de días que existen entre 2 fechas.. por favor si me pueden ayudar les agradezco!!! Saludos
6/28/2008 at 8:32 pm
Por favor necesito saber si existe algún método de ruby que pueda facilitarme el cálculo.. De antemano muchas gracias