[ruby-it] metodi nel modello

Alessandro Ale aleee.it a gmail.com
Lun 9 Feb 2009 11:22:31 CET


Pietro Giorgianni wrote:
> 2009/2/9 Alessandro Ale <aleee.it a gmail.com>:
>> profilo), in alternativa vorrei che visualizzasse il login.
>>
>> Per far questo ho pensato di mettere un metodo del tipo
>> 'nome_da_visualizzare' nel modello user, ma non so come fare
>> (probabilmente vi sembrer� una domanda molto banale, ma non ci riesco lo
>> stesso...)
>>
> 
> manca un dato: se profile � presente, nome e cognome sono sicuramente
> presenti oppure no?
> 
> se 
> s�,
class User < ActiveRecord::Base
>   has_one :profile
> 
>   def name_to_show
>     profile ? "#{profile.first_name} #{profile.last_name}" : login
>   end
> end
> 
> altrimenti:
> 
> class User < ActiveRecord::Base
>   has_one :profile
> 
>   def name_to_show
>     (profile && profile.first_name && profile.last_name) ?
> "#{profile.first_name} #{profile.last_name}" : login
>   end
> end
> 
> solo che cos� � illegibile, quindi meglio:
> 
>   def name_to_show
>     if profile && profile.first_name && profile.last_name
>       "#{profile.first_name} #{profile.last_name}"
>     else
>       login
>     end
>   end
> 
> ah, questa cosa di fare "#{a} #{b}" invece di a + " " + b oppure [a,
> b].join ' ' � un vizio mio, l'ho preso anni fa, dopo la prima volta
> che ho provato a concatenare 10000000 stringhe in un ciclo for, con
> risultati devastanti. in effetti � molto leggibile finch� sono #{a} e
> #{b}, un po' meno quando si complica un po'.
> 
> meglio sarebbe, forse, definire in Profile:
> 
> class Profile < ActiveRecord::Base
>   def full_name
>     (first_name && last_name) ? "#{first_name} #{last_name}" : nil
>   end
> end
> 
> e poi in user:
> 
> def name_to_show
>     (profile && profile.full_name) || login
> end
> 
> cos� credo sia pi� chiaro, e in pi� la roba di profile la maneggia
> profile, e la roba di user la maneggia user.
> 
> pietro

Perfetto!
era esattamente l'aiuto che cercavo.
una curiosità: quando faccio

 > profile ? "#{profile.first_name} #{profile.last_name}" : login

vengono fatte delle query? potrebbero esserci problemi di prestazioni?

Grazie molte!

Ciao
-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list