J'aurais même proposé de stocker ça en minutes et donc en integer !
"1.33333..." reste moins joli que "80" à stocker. :-)

Basecamp (de 37signals) offre la double saisie : "1:30" ou "1.5". À
l'affichage tout est en flottant à 2 décimales.

Donc je conseillerais dans le modèle, un truc du genre :

def field_in_hours
  (read_attribute(:field) || 0) * 60.0
end

def field_in_hours=(value)
  value = value.to_s
  if value =~ /\d+:\d+/
    value = Regexp.last_match(1).to_i * 60 + Regexp.last_match(2).to_i
  else
    value = value.gsub(/\s+/, '').sub(',', '.').to_f * 60
  end
  write_attribute(:field, value.round)
end

Et dans la vue :

<%= f.text_field :field_in_hours %>

Au final, on a :field en minutes, et :field_in_hours en heures (format
flottant).

Julien

On 7 juil, 15:59, Michel Belleville <[email protected]>
wrote:
>
> Mon conseil : stocker ça en chaîne, tout le monde sous forme "pseudo-float"
> si ça t'arrange, et faire un truc genre before_save qui va convertir la
> valeur, un script du genre :
> if value =~ /\d+:\d+/
> value[/\d+(?=:)/] + '.' + (value[/:(\d+)/, 1].to_i * 100 / 60).to_s
> end
>
> Merci ;-)
>
>
>
> Toujours un plaisir de partager.
>
> Michel Belleville
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]
-~----------~----~----~----~------~----~------~--~---

Répondre à