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]
-~----------~----~----~----~------~----~------~--~---