[ruby-it] Alleggerire estrazione dati da tabella

Pietro Giorgianni giorgian a gmail.com
Mer 7 Ott 2009 13:10:50 CEST


Il 07 ottobre 2009 12.39, Daneel Olivaw <daneel.olivaw.r a gmail.com> ha scritto:
> Ah, c'è un errore dopo "car2" (che poi sarebbe lafine dell'ultimo
> conteggio e passaggio alla variabile) non ci va la parentesi :-)

mannaggia! :P

> <% for user in @user %>
>  <%= user.login %>
>  <%= user['car1'] %>
>  <% car1tot += user['car1'].to_i %>
>  <%= user['car2'] %>
>  <% car2tot += user['car2'].to_i %>
> <% end %>
> ...
>
> Ho dovuto aggiungere il "to_i" perché il dato così com'è è visto come
> stringa... è normale?

Sì, è normale: il metodo find_by_sql è definito così:

def find_by_sql(sql)
  connection.select_all(sanitize_sql(sql), "#{name} Load").collect! {
|record| instantiate(record) }
end

e tutti i metodi find usano find_by_sql.

Ad esempio, in un mio progetto c'è un modello Amount, un cui elemento
(trovato con Amount.first) è questo:
#<Amount id: 1, attachment_id: 174, tax_base: 139.58, vat_rate: 20.0,
vat: 27.92, created_at: "2008-11-07 15:58:56", updated_at: "2008-11-07
15:58:56">

dalla connection però arriva questo:

{"vat_rate"=>"20", "updated_at"=>"2008-11-07 15:58:56",
"attachment_id"=>"174", "id"=>"1", "vat"=>"27.92",
"tax_base"=>"139.58", "created_at"=>"2008-11-07 15:58:56"}

È poi il metodo instantiate che fa le conversioni necessarie,
basandosi sull'attributo columns, che contiene la definizione delle
varie colonne.

pietro


More information about the Ml mailing list