librelist archives

« back to archive

Problemas comparando horarios , rails 3

Problemas comparando horarios , rails 3

From:
Diego Caliri
Date:
2011-02-04 @ 00:41
Buenas, me encuentro con problemas para comparar horarios. Basicamente el
problema que estoy tratando de resolver es para manejar agendas diarias, en
las cuales se carga alguna "tarea" que se ejecuta en una franja horaria
específica para un día especifico.

Inicialmente tenía 2 atributos solamente, de tipo *datetime*:
*start_at* y *end_at
*pero resulta que se tienen que hacer muchos chequeos un tanto evitables si
se usara de la siguiente forma con 3 atributos: *date*(date), *start_at*(time),
*end_at*(time). El problema es que en el momento que hice ese cambio dejaron
de funcionar las validaciones y después de probar las comparaciones (parte
de los métodos que validan) en consola y directamente sobre mysql también
resulta que funcionan bien, pero durante la ejecución del escenario tanto en
el test como hacíendolo manualmente falla.

Me hace mucho ruido en la cabeza igualmente lo siguiente:

Si veo sobre la tabla de mysql directamente, veo lo siguiente:

| id | patient_id | start_at | end_at   | date       | user_id | agenda_id |
notes | cancelled_at | created_at          | updated_at          |

+----+------------+----------+----------+------------+---------+-----------+-------+--------------+---------------------+---------------------+
| 14 |          1 | *15:00:00* | *21:00:00* | 2011-02-04 |       3 |
1 |       | NULL         | 2011-02-04 00:24:08 | 2011-02-04 00:24:08 |

lo cual me parece perfecto. Ahora si veo en la consola de rails, veo lo
siguiente para el objeto que se corresponde con la tupla de la DB anterior:

 => #<Turn id: 14, patient_id: 1, start_at: "*2000-01-01 15:00:00*", end_at:
"*2000-01-01 21:00:00*", date: "2011-02-04", user_id: 3, agenda_id: 1,
notes: "", cancelled_at: nil, created_at: "2011-02-04 00:24:08", updated_at:
"2011-02-04 00:24:08">

lo cual me desconcierta totalmente... Seguramente es algo que desconozco por
no haberme topado con un escenario similar antes. Mi pregunta es porque pone
la fecha.

Igualmente lo que más me desconcierta es que si hago copy/paste de una parte
del código que me debería devolver FALSE en la consola, éste me devuelve
FALSE, pero en la ejecución del test o si lo ejecuto manualmente, éste me
devuelve TRUE.

*Version de Ruby:*
dcaliri:imr dcaliri$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]

*Versión de Rails:*
dcaliri:imr dcaliri$ rails -v
Rails 3.0.3

En fin... alguien ha tenido algún problema similar?

Saludos, gracias

-- 
Diego S. Caliri

Re: [rubysur] Problemas comparando horarios , rails 3

From:
TuteC
Date:
2011-02-04 @ 18:52
2011/2/3 Diego Caliri <diegocaliri@gmail.com>:
> Buenas, me encuentro con problemas para comparar horarios. Basicamente el
> problema que estoy tratando de resolver es para manejar agendas diarias, en
> las cuales se carga alguna "tarea" que se ejecuta en una franja horaria
> específica para un día especifico.
> Inicialmente tenía 2 atributos solamente, de tipo datetime: start_at y
> end_at pero resulta que se tienen que hacer muchos chequeos un tanto
> evitables si se usara de la siguiente forma con 3 atributos: date(date),
> start_at(time), end_at(time). El problema es que en el momento que hice ese
> cambio dejaron de funcionar las validaciones y después de probar las
> comparaciones (parte de los métodos que validan) en consola y directamente
> sobre mysql también resulta que funcionan bien, pero durante la ejecución
> del escenario tanto en el test como hacíendolo manualmente falla.
>
> Me hace mucho ruido en la cabeza igualmente lo siguiente:
> Si veo sobre la tabla de mysql directamente, veo lo siguiente:
> | id | patient_id | start_at | end_at   | date       | user_id | agenda_id |
> notes | cancelled_at | created_at          | updated_at          |
> 
+----+------------+----------+----------+------------+---------+-----------+-------+--------------+---------------------+---------------------+
> | 14 |          1 | 15:00:00 | 21:00:00 | 2011-02-04 |       3 |         1 |
>       | NULL         | 2011-02-04 00:24:08 | 2011-02-04 00:24:08 |
> lo cual me parece perfecto. Ahora si veo en la consola de rails, veo lo
> siguiente para el objeto que se corresponde con la tupla de la DB anterior:
>  => #<Turn id: 14, patient_id: 1, start_at: "2000-01-01 15:00:00", end_at:
> "2000-01-01 21:00:00", date: "2011-02-04", user_id: 3, agenda_id: 1, notes:
> "", cancelled_at: nil, created_at: "2011-02-04 00:24:08", updated_at:
> "2011-02-04 00:24:08">
> lo cual me desconcierta totalmente... Seguramente es algo que desconozco por
> no haberme topado con un escenario similar antes. Mi pregunta es porque pone
> la fecha.
> Igualmente lo que más me desconcierta es que si hago copy/paste de una parte
> del código que me debería devolver FALSE en la consola, éste me devuelve
> FALSE, pero en la ejecución del test o si lo ejecuto manualmente, éste me
> devuelve TRUE.
> Version de Ruby:
> dcaliri:imr dcaliri$ ruby -v
> ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]
> Versión de Rails:
> dcaliri:imr dcaliri$ rails -v
> Rails 3.0.3
> En fin... alguien ha tenido algún problema similar?
> Saludos, gracias
> --
> Diego S. Caliri

Fijate en:
  http://www.rebeccablyth.co.uk/2008/01/03/time-columns-and-rails/
  http://www.google.com.ar/search?q=rails+datetime+dummy+date+2000-01-01

Parece que no existe clase equivalente a Time (sin date) en Rails.

Saludos y suerte,

Tute (pero TuteC, no el otro! :-b )

Re: [rubysur] Problemas comparando horarios , rails 3

From:
Diego Caliri
Date:
2011-02-05 @ 16:29
El 4 de febrero de 2011 15:52, TuteC <tutecosta@gmail.com> escribió:

> 2011/2/3 Diego Caliri <diegocaliri@gmail.com>:
> > Buenas, me encuentro con problemas para comparar horarios. Basicamente el
> > problema que estoy tratando de resolver es para manejar agendas diarias,
> en
> > las cuales se carga alguna "tarea" que se ejecuta en una franja horaria
> > específica para un día especifico.
> > Inicialmente tenía 2 atributos solamente, de tipo datetime: start_at y
> > end_at pero resulta que se tienen que hacer muchos chequeos un tanto
> > evitables si se usara de la siguiente forma con 3 atributos: date(date),
> > start_at(time), end_at(time). El problema es que en el momento que hice
> ese
> > cambio dejaron de funcionar las validaciones y después de probar las
> > comparaciones (parte de los métodos que validan) en consola y
> directamente
> > sobre mysql también resulta que funcionan bien, pero durante la ejecución
> > del escenario tanto en el test como hacíendolo manualmente falla.
> >
> > Me hace mucho ruido en la cabeza igualmente lo siguiente:
> > Si veo sobre la tabla de mysql directamente, veo lo siguiente:
> > | id | patient_id | start_at | end_at   | date       | user_id |
> agenda_id |
> > notes | cancelled_at | created_at          | updated_at          |
> >
> 
+----+------------+----------+----------+------------+---------+-----------+-------+--------------+---------------------+---------------------+
> > | 14 |          1 | 15:00:00 | 21:00:00 | 2011-02-04 |       3 |
> 1 |
> >       | NULL         | 2011-02-04 00:24:08 | 2011-02-04 00:24:08 |
> > lo cual me parece perfecto. Ahora si veo en la consola de rails, veo lo
> > siguiente para el objeto que se corresponde con la tupla de la DB
> anterior:
> >  => #<Turn id: 14, patient_id: 1, start_at: "2000-01-01 15:00:00",
> end_at:
> > "2000-01-01 21:00:00", date: "2011-02-04", user_id: 3, agenda_id: 1,
> notes:
> > "", cancelled_at: nil, created_at: "2011-02-04 00:24:08", updated_at:
> > "2011-02-04 00:24:08">
> > lo cual me desconcierta totalmente... Seguramente es algo que desconozco
> por
> > no haberme topado con un escenario similar antes. Mi pregunta es porque
> pone
> > la fecha.
> > Igualmente lo que más me desconcierta es que si hago copy/paste de una
> parte
> > del código que me debería devolver FALSE en la consola, éste me devuelve
> > FALSE, pero en la ejecución del test o si lo ejecuto manualmente, éste me
> > devuelve TRUE.
> > Version de Ruby:
> > dcaliri:imr dcaliri$ ruby -v
> > ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]
> > Versión de Rails:
> > dcaliri:imr dcaliri$ rails -v
> > Rails 3.0.3
> > En fin... alguien ha tenido algún problema similar?
> > Saludos, gracias
> > --
> > Diego S. Caliri
>
> Fijate en:
>  http://www.rebeccablyth.co.uk/2008/01/03/time-columns-and-rails/
>  http://www.google.com.ar/search?q=rails+datetime+dummy+date+2000-01-01
>
> Parece que no existe clase equivalente a Time (sin date) en Rails.
>
> Saludos y suerte,
>
> Tute (pero TuteC, no el otro! :-b )
>



-- 
Diego S. Caliri

Gracias Emmanuel y Tute!

Error al que no se como etiquetar

From:
Tute
Date:
2011-02-09 @ 15:42
Estoy desorientado con un error muy particular. Voy a poner las partes 
de código que considero relevantes a ver si algun craneo de Rails de la 
lista me da una mano:


En el model User, tengo la siguiente validación:

   validates :custom_nickname,
   :allow_blank => true,
   :uniqueness  => true,
   :format      => { :with => /^[A-Za-z]\w+$/ },
   :length      => { :minimum => 4, :maximum => 15 }


En una vista, tengo los siguientes links:
show.haml.erb

   Hi,
     = current_user.email
     = link_to 'Logout', destroy_user_session_path, :class => 'awesome'
     = link_to 'Prefs', preferences_path, :class => 'awesome'
     = link_to 'My Channel', user_channel_path(current_user), :class => 
'awesome green'

En mi routes.rb tengo entre otras muchas rutas, la siguiente:

resources :user_channels, :path => 'channels' do
     member do
       get "/next/:last_rating_id", :to => 'user_channels#next'
     end
     collection do
       get "/followers/:user_id", :to => 'user_channels#followers'
     end
   end

Mi versión de Rails es 3.0.0. Intente migrar a 3.0.3 pero la mayoria de 
la app me deja de funcionar. Probablemente, porque fue desarrollada con 
3.0.0beta4.

El problema en cuestión es que si el usuario entra a modificar sus 
Preferencias y modifica cualquiera, también me modifica el 
custom_nickname a "". Desde el momento que el custom_nickname pasa a ser 
"", la la vista show.haml.erb me pincha:




ActionView::Template::Error (No route matches {:action=>"destroy", 
:controller=>"user_channels", :id=>#<User id: 19, [...] custom_nickname: 
"", private_channel: false, crawled_at: "2010-10-27 18:13:02", raked_at: 
"2010-11-24 22:46:55", fb_uid: nil, search_recs_at: nil, tw_uid: nil, 
tw_token: nil, tw_secret: nil, publish_to_tw: nil>}):
     5:     = current_user.email
     6:     = link_to 'Logout', destroy_user_session_path, :class => 
'awesome'
     7:     = link_to 'Prefs', preferences_path, :class => 'awesome'
     8:     = link_to 'My Channel', user_channel_path(current_user), 
:class => 'awesome green'
     9:
     10:
     11:     - if current_user.admin?
   app/views/player/show.html.haml:8:in 
`_app_views_player_show_html_haml__286813185934507765_4340040_1043211688382998723'

Si vuelvo a setear custom_nickname en nil o en algo que no sea una 
cadena vacia, y obviamente, cumpla con el resto de las validaciones, 
vuelve a funcionar la vista.

Estoy francamente sorprendido.

Re: [rubysur] Error al que no se como etiquetar

From:
Diego Caliri
Date:
2011-02-09 @ 19:42
Tenes que validar en la regexp para q te admita una cadena vacía, porque
tenés validaciones q se contradicen:

El allow blank te permitiría la cadena vacía, pero el format no te la
permite.

El 9 de febrero de 2011 12:42, Tute <tute.unique@gmail.com> escribió:

> Estoy desorientado con un error muy particular. Voy a poner las partes
> de código que considero relevantes a ver si algun craneo de Rails de la
> lista me da una mano:
>
>
> En el model User, tengo la siguiente validación:
>
>   validates :custom_nickname,
>   :allow_blank => true,
>   :uniqueness  => true,
>   :format      => { :with => /^[A-Za-z]\w+$/ },
>   :length      => { :minimum => 4, :maximum => 15 }
>
>
> En una vista, tengo los siguientes links:
> show.haml.erb
>
>   Hi,
>     = current_user.email
>     = link_to 'Logout', destroy_user_session_path, :class => 'awesome'
>     = link_to 'Prefs', preferences_path, :class => 'awesome'
>     = link_to 'My Channel', user_channel_path(current_user), :class =>
> 'awesome green'
>
> En mi routes.rb tengo entre otras muchas rutas, la siguiente:
>
> resources :user_channels, :path => 'channels' do
>     member do
>       get "/next/:last_rating_id", :to => 'user_channels#next'
>     end
>     collection do
>       get "/followers/:user_id", :to => 'user_channels#followers'
>     end
>   end
>
> Mi versión de Rails es 3.0.0. Intente migrar a 3.0.3 pero la mayoria de
> la app me deja de funcionar. Probablemente, porque fue desarrollada con
> 3.0.0beta4.
>
> El problema en cuestión es que si el usuario entra a modificar sus
> Preferencias y modifica cualquiera, también me modifica el
> custom_nickname a "". Desde el momento que el custom_nickname pasa a ser
> "", la la vista show.haml.erb me pincha:
>
>
>
>
> ActionView::Template::Error (No route matches {:action=>"destroy",
> :controller=>"user_channels", :id=>#<User id: 19, [...] custom_nickname:
> "", private_channel: false, crawled_at: "2010-10-27 18:13:02", raked_at:
> "2010-11-24 22:46:55", fb_uid: nil, search_recs_at: nil, tw_uid: nil,
> tw_token: nil, tw_secret: nil, publish_to_tw: nil>}):
>     5:     = current_user.email
>     6:     = link_to 'Logout', destroy_user_session_path, :class =>
> 'awesome'
>     7:     = link_to 'Prefs', preferences_path, :class => 'awesome'
>     8:     = link_to 'My Channel', user_channel_path(current_user),
> :class => 'awesome green'
>     9:
>     10:
>     11:     - if current_user.admin?
>   app/views/player/show.html.haml:8:in
>
> 
`_app_views_player_show_html_haml__286813185934507765_4340040_1043211688382998723'
>
> Si vuelvo a setear custom_nickname en nil o en algo que no sea una
> cadena vacia, y obviamente, cumpla con el resto de las validaciones,
> vuelve a funcionar la vista.
>
> Estoy francamente sorprendido.
>



-- 
Diego S. Caliri

Re: [rubysur] Error al que no se como etiquetar

From:
Tute
Date:
2011-02-09 @ 20:45
Y como es posible que en mi local no pase  y qué en la consola pueda 
salvar el usuario sin recibir error de validación?

Gracias igual por la respuesta. Voy arreglar eso.

On 02/09/2011 04:42 PM, Diego Caliri wrote:
> Tenes que validar en la regexp para q te admita una cadena vacía, 
> porque tenés validaciones q se contradicen:
>
> El allow blank te permitiría la cadena vacía, pero el format no te la 
> permite.
>
> El 9 de febrero de 2011 12:42, Tute <tute.unique@gmail.com 
> <mailto:tute.unique@gmail.com>> escribió:
>
>     Estoy desorientado con un error muy particular. Voy a poner las partes
>     de código que considero relevantes a ver si algun craneo de Rails
>     de la
>     lista me da una mano:
>
>
>     En el model User, tengo la siguiente validación:
>
>       validates :custom_nickname,
>       :allow_blank => true,
>       :uniqueness  => true,
>       :format      => { :with => /^[A-Za-z]\w+$/ },
>       :length      => { :minimum => 4, :maximum => 15 }
>
>
>     En una vista, tengo los siguientes links:
>     show.haml.erb
>
>       Hi,
>         = current_user.email
>         = link_to 'Logout', destroy_user_session_path, :class => 'awesome'
>         = link_to 'Prefs', preferences_path, :class => 'awesome'
>         = link_to 'My Channel', user_channel_path(current_user), :class =>
>     'awesome green'
>
>     En mi routes.rb tengo entre otras muchas rutas, la siguiente:
>
>     resources :user_channels, :path => 'channels' do
>         member do
>           get "/next/:last_rating_id", :to => 'user_channels#next'
>         end
>         collection do
>           get "/followers/:user_id", :to => 'user_channels#followers'
>         end
>       end
>
>     Mi versión de Rails es 3.0.0. Intente migrar a 3.0.3 pero la
>     mayoria de
>     la app me deja de funcionar. Probablemente, porque fue
>     desarrollada con
>     3.0.0beta4.
>
>     El problema en cuestión es que si el usuario entra a modificar sus
>     Preferencias y modifica cualquiera, también me modifica el
>     custom_nickname a "". Desde el momento que el custom_nickname pasa
>     a ser
>     "", la la vista show.haml.erb me pincha:
>
>
>
>
>     ActionView::Template::Error (No route matches {:action=>"destroy",
>     :controller=>"user_channels", :id=>#<User id: 19, [...]
>     custom_nickname:
>     "", private_channel: false, crawled_at: "2010-10-27 18:13:02",
>     raked_at:
>     "2010-11-24 22:46:55", fb_uid: nil, search_recs_at: nil, tw_uid: nil,
>     tw_token: nil, tw_secret: nil, publish_to_tw: nil>}):
>         5:     = current_user.email
>         6:     = link_to 'Logout', destroy_user_session_path, :class =>
>     'awesome'
>         7:     = link_to 'Prefs', preferences_path, :class => 'awesome'
>         8:     = link_to 'My Channel', user_channel_path(current_user),
>     :class => 'awesome green'
>         9:
>         10:
>         11:     - if current_user.admin?
>       app/views/player/show.html.haml:8:in
>     
`_app_views_player_show_html_haml__286813185934507765_4340040_1043211688382998723'
>
>     Si vuelvo a setear custom_nickname en nil o en algo que no sea una
>     cadena vacia, y obviamente, cumpla con el resto de las validaciones,
>     vuelve a funcionar la vista.
>
>     Estoy francamente sorprendido.
>
>
>
>
> -- 
> Diego S. Caliri
>
>

Re: [rubysur] Error al que no se como etiquetar

From:
Tute
Date:
2011-02-09 @ 20:35
Y como es posible que en mi local no pase  y qué en la consola pueda 
salvar el usuario sin recibir error de validación?

Gracias igual por la respuesta. Voy arreglar eso.

On 02/09/2011 04:42 PM, Diego Caliri wrote:
> Tenes que validar en la regexp para q te admita una cadena vacía, 
> porque tenés validaciones q se contradicen:
>
> El allow blank te permitiría la cadena vacía, pero el format no te la 
> permite.
>
> El 9 de febrero de 2011 12:42, Tute <tute.unique@gmail.com 
> <mailto:tute.unique@gmail.com>> escribió:
>
>     Estoy desorientado con un error muy particular. Voy a poner las partes
>     de código que considero relevantes a ver si algun craneo de Rails
>     de la
>     lista me da una mano:
>
>
>     En el model User, tengo la siguiente validación:
>
>       validates :custom_nickname,
>       :allow_blank => true,
>       :uniqueness  => true,
>       :format      => { :with => /^[A-Za-z]\w+$/ },
>       :length      => { :minimum => 4, :maximum => 15 }
>
>
>     En una vista, tengo los siguientes links:
>     show.haml.erb
>
>       Hi,
>         = current_user.email
>         = link_to 'Logout', destroy_user_session_path, :class => 'awesome'
>         = link_to 'Prefs', preferences_path, :class => 'awesome'
>         = link_to 'My Channel', user_channel_path(current_user), :class =>
>     'awesome green'
>
>     En mi routes.rb tengo entre otras muchas rutas, la siguiente:
>
>     resources :user_channels, :path => 'channels' do
>         member do
>           get "/next/:last_rating_id", :to => 'user_channels#next'
>         end
>         collection do
>           get "/followers/:user_id", :to => 'user_channels#followers'
>         end
>       end
>
>     Mi versión de Rails es 3.0.0. Intente migrar a 3.0.3 pero la
>     mayoria de
>     la app me deja de funcionar. Probablemente, porque fue
>     desarrollada con
>     3.0.0beta4.
>
>     El problema en cuestión es que si el usuario entra a modificar sus
>     Preferencias y modifica cualquiera, también me modifica el
>     custom_nickname a "". Desde el momento que el custom_nickname pasa
>     a ser
>     "", la la vista show.haml.erb me pincha:
>
>
>
>
>     ActionView::Template::Error (No route matches {:action=>"destroy",
>     :controller=>"user_channels", :id=>#<User id: 19, [...]
>     custom_nickname:
>     "", private_channel: false, crawled_at: "2010-10-27 18:13:02",
>     raked_at:
>     "2010-11-24 22:46:55", fb_uid: nil, search_recs_at: nil, tw_uid: nil,
>     tw_token: nil, tw_secret: nil, publish_to_tw: nil>}):
>         5:     = current_user.email
>         6:     = link_to 'Logout', destroy_user_session_path, :class =>
>     'awesome'
>         7:     = link_to 'Prefs', preferences_path, :class => 'awesome'
>         8:     = link_to 'My Channel', user_channel_path(current_user),
>     :class => 'awesome green'
>         9:
>         10:
>         11:     - if current_user.admin?
>       app/views/player/show.html.haml:8:in
>     
`_app_views_player_show_html_haml__286813185934507765_4340040_1043211688382998723'
>
>     Si vuelvo a setear custom_nickname en nil o en algo que no sea una
>     cadena vacia, y obviamente, cumpla con el resto de las validaciones,
>     vuelve a funcionar la vista.
>
>     Estoy francamente sorprendido.
>
>
>
>
> -- 
> Diego S. Caliri
>
>

Re: [rubysur] Error al que no se como etiquetar

From:
Ary Manzana
Date:
2011-02-09 @ 15:51
Hola Tute,

En el error que mandaste más abajo no dice en qué línea te da error entonces
es un poco difícil de decirte qué está pasando. Tampoco podemos ver cúal es
la lógica que actualiza las perferencias del usuario. Y tampoco podemos ver
dónde está el mapeo de la ruta que justamente no está encontrando:

No route matches {:action=>"destroy",
> :controller=>"user_channels", :id=>#<User id: 19, [...] custom_nickname:
> "", private_channel: false, crawled_at: "2010-10-27 18:13:02", raked_at:
> "2010-11-24 22:46:55", fb_uid: nil, search_recs_at: nil, tw_uid: nil,
> tw_token: nil, tw_secret: nil, publish_to_tw: nil>}


Nos podrás mostrar esas cosas?

Saludos,
Ary

2011/2/9 Tute <tute.unique@gmail.com>

> Estoy desorientado con un error muy particular. Voy a poner las partes
> de código que considero relevantes a ver si algun craneo de Rails de la
> lista me da una mano:
>
>
> En el model User, tengo la siguiente validación:
>
>   validates :custom_nickname,
>   :allow_blank => true,
>   :uniqueness  => true,
>   :format      => { :with => /^[A-Za-z]\w+$/ },
>   :length      => { :minimum => 4, :maximum => 15 }
>
>
> En una vista, tengo los siguientes links:
> show.haml.erb
>
>   Hi,
>     = current_user.email
>     = link_to 'Logout', destroy_user_session_path, :class => 'awesome'
>     = link_to 'Prefs', preferences_path, :class => 'awesome'
>     = link_to 'My Channel', user_channel_path(current_user), :class =>
> 'awesome green'
>
> En mi routes.rb tengo entre otras muchas rutas, la siguiente:
>
> resources :user_channels, :path => 'channels' do
>     member do
>       get "/next/:last_rating_id", :to => 'user_channels#next'
>     end
>     collection do
>       get "/followers/:user_id", :to => 'user_channels#followers'
>     end
>   end
>
> Mi versión de Rails es 3.0.0. Intente migrar a 3.0.3 pero la mayoria de
> la app me deja de funcionar. Probablemente, porque fue desarrollada con
> 3.0.0beta4.
>
> El problema en cuestión es que si el usuario entra a modificar sus
> Preferencias y modifica cualquiera, también me modifica el
> custom_nickname a "". Desde el momento que el custom_nickname pasa a ser
> "", la la vista show.haml.erb me pincha:
>
>
>
>
> ActionView::Template::Error (No route matches {:action=>"destroy",
> :controller=>"user_channels", :id=>#<User id: 19, [...] custom_nickname:
> "", private_channel: false, crawled_at: "2010-10-27 18:13:02", raked_at:
> "2010-11-24 22:46:55", fb_uid: nil, search_recs_at: nil, tw_uid: nil,
> tw_token: nil, tw_secret: nil, publish_to_tw: nil>}):
>     5:     = current_user.email
>     6:     = link_to 'Logout', destroy_user_session_path, :class =>
> 'awesome'
>     7:     = link_to 'Prefs', preferences_path, :class => 'awesome'
>     8:     = link_to 'My Channel', user_channel_path(current_user),
> :class => 'awesome green'
>     9:
>     10:
>     11:     - if current_user.admin?
>   app/views/player/show.html.haml:8:in
>
> 
`_app_views_player_show_html_haml__286813185934507765_4340040_1043211688382998723'
>
> Si vuelvo a setear custom_nickname en nil o en algo que no sea una
> cadena vacia, y obviamente, cumpla con el resto de las validaciones,
> vuelve a funcionar la vista.
>
> Estoy francamente sorprendido.
>

Re: [rubysur] Problemas comparando horarios , rails 3

From:
Diego Caliri
Date:
2011-02-13 @ 15:27
El 5 de febrero de 2011 13:29, Diego Caliri <diegocaliri@gmail.com>escribió:

>
>
> El 4 de febrero de 2011 15:52, TuteC <tutecosta@gmail.com> escribió:
>
> 2011/2/3 Diego Caliri <diegocaliri@gmail.com>:
>> > Buenas, me encuentro con problemas para comparar horarios. Basicamente
>> el
>> > problema que estoy tratando de resolver es para manejar agendas diarias,
>> en
>> > las cuales se carga alguna "tarea" que se ejecuta en una franja horaria
>> > específica para un día especifico.
>> > Inicialmente tenía 2 atributos solamente, de tipo datetime: start_at y
>> > end_at pero resulta que se tienen que hacer muchos chequeos un tanto
>> > evitables si se usara de la siguiente forma con 3 atributos: date(date),
>> > start_at(time), end_at(time). El problema es que en el momento que hice
>> ese
>> > cambio dejaron de funcionar las validaciones y después de probar las
>> > comparaciones (parte de los métodos que validan) en consola y
>> directamente
>> > sobre mysql también resulta que funcionan bien, pero durante la
>> ejecución
>> > del escenario tanto en el test como hacíendolo manualmente falla.
>> >
>> > Me hace mucho ruido en la cabeza igualmente lo siguiente:
>> > Si veo sobre la tabla de mysql directamente, veo lo siguiente:
>> > | id | patient_id | start_at | end_at   | date       | user_id |
>> agenda_id |
>> > notes | cancelled_at | created_at          | updated_at          |
>> >
>> 
+----+------------+----------+----------+------------+---------+-----------+-------+--------------+---------------------+---------------------+
>> > | 14 |          1 | 15:00:00 | 21:00:00 | 2011-02-04 |       3 |
>> 1 |
>> >       | NULL         | 2011-02-04 00:24:08 | 2011-02-04 00:24:08 |
>> > lo cual me parece perfecto. Ahora si veo en la consola de rails, veo lo
>> > siguiente para el objeto que se corresponde con la tupla de la DB
>> anterior:
>> >  => #<Turn id: 14, patient_id: 1, start_at: "2000-01-01 15:00:00",
>> end_at:
>> > "2000-01-01 21:00:00", date: "2011-02-04", user_id: 3, agenda_id: 1,
>> notes:
>> > "", cancelled_at: nil, created_at: "2011-02-04 00:24:08", updated_at:
>> > "2011-02-04 00:24:08">
>> > lo cual me desconcierta totalmente... Seguramente es algo que desconozco
>> por
>> > no haberme topado con un escenario similar antes. Mi pregunta es porque
>> pone
>> > la fecha.
>> > Igualmente lo que más me desconcierta es que si hago copy/paste de una
>> parte
>> > del código que me debería devolver FALSE en la consola, éste me devuelve
>> > FALSE, pero en la ejecución del test o si lo ejecuto manualmente, éste
>> me
>> > devuelve TRUE.
>> > Version de Ruby:
>> > dcaliri:imr dcaliri$ ruby -v
>> > ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]
>> > Versión de Rails:
>> > dcaliri:imr dcaliri$ rails -v
>> > Rails 3.0.3
>> > En fin... alguien ha tenido algún problema similar?
>> > Saludos, gracias
>> > --
>> > Diego S. Caliri
>>
>> Fijate en:
>>  http://www.rebeccablyth.co.uk/2008/01/03/time-columns-and-rails/
>>  http://www.google.com.ar/search?q=rails+datetime+dummy+date+2000-01-01
>>
>> Parece que no existe clase equivalente a Time (sin date) en Rails.
>>
>> Saludos y suerte,
>>
>> Tute (pero TuteC, no el otro! :-b )
>>
>
>
>
> --
> Diego S. Caliri
>
> Gracias Emmanuel y Tute!
>
>
Dejo asentado como concluyó este tema: Al final lo resolví guardando como
strings los "Time" en la BD corriendo una función en before_validation que
me armaba el atributo en el siguiente formato %H:%M y usé select común para
los formularios. La buena noticia es que todas las validaciones custom que
había escrito antes, me sirvieron a la perfección (comparando con >, < e ==)
para los horarios guardados en strings.

Muchas Gracias



-- 
Diego S. Caliri

Re: [rubysur] Problemas comparando horarios , rails 3

From:
Emmanuel Oga
Date:
2011-02-04 @ 01:16
2011/2/3 Diego Caliri <diegocaliri@gmail.com>:
> Buenas, me encuentro con problemas para comparar horarios. Basicamente el
> problema que estoy tratando de resolver es para manejar agendas diarias, en
> las cuales se carga alguna "tarea" que se ejecuta en una franja horaria
> específica para un día especifico.
> Inicialmente tenía 2 atributos solamente, de tipo datetime: start_at y
> end_at pero resulta que se tienen que hacer muchos chequeos un tanto
> evitables si se usara de la siguiente forma con 3 atributos: date(date),
> start_at(time), end_at(time). El problema es que en el momento que hice ese
> cambio dejaron de funcionar las validaciones y después de probar las
> comparaciones (parte de los métodos que validan) en consola y directamente
> sobre mysql también resulta que funcionan bien, pero durante la ejecución
> del escenario tanto en el test como hacíendolo manualmente falla.
>
> Me hace mucho ruido en la cabeza igualmente lo siguiente:
> Si veo sobre la tabla de mysql directamente, veo lo siguiente:
> | id | patient_id | start_at | end_at   | date       | user_id | agenda_id |
> notes | cancelled_at | created_at          | updated_at          |
> 
+----+------------+----------+----------+------------+---------+-----------+-------+--------------+---------------------+---------------------+
> | 14 |          1 | 15:00:00 | 21:00:00 | 2011-02-04 |       3 |         1 |
>       | NULL         | 2011-02-04 00:24:08 | 2011-02-04 00:24:08 |
> lo cual me parece perfecto. Ahora si veo en la consola de rails, veo lo
> siguiente para el objeto que se corresponde con la tupla de la DB anterior:
>  => #<Turn id: 14, patient_id: 1, start_at: "2000-01-01 15:00:00", end_at:
> "2000-01-01 21:00:00", date: "2011-02-04", user_id: 3, agenda_id: 1, notes:
> "", cancelled_at: nil, created_at: "2011-02-04 00:24:08", updated_at:
> "2011-02-04 00:24:08">
> lo cual me desconcierta totalmente... Seguramente es algo que desconozco por
> no haberme topado con un escenario similar antes. Mi pregunta es porque pone
> la fecha.

Se me ocurre que el tipo de datos que rails usa cuando le decis que
una columna es del tipo "time" en la db es un objeto de clase Time, y
time incluye la fecha:

ruby-1.9.2-p0 :001 > Time.now  => 2011-02-03 22:08:43 -0300

Porque elige ese año en particular, ni idea.

Una de esas te resulte más practico guardar la hora como un string,
"17:30", un integer: 1730, o partirla en dos integers 17,30.

Saludos

> Igualmente lo que más me desconcierta es que si hago copy/paste de una parte
> del código que me debería devolver FALSE en la consola, éste me devuelve
> FALSE, pero en la ejecución del test o si lo ejecuto manualmente, éste me
> devuelve TRUE.
> Version de Ruby:
> dcaliri:imr dcaliri$ ruby -v
> ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]
> Versión de Rails:
> dcaliri:imr dcaliri$ rails -v
> Rails 3.0.3
> En fin... alguien ha tenido algún problema similar?
> Saludos, gracias
> --
> Diego S. Caliri
>
>