Forum: Italian Ruby user group self-relationship

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
tarini (Guest)
on 2007-04-09 00:42
(Received via mailing list)
salve ragazzi, sto facendo un po' di test con rails per cercare di
entrare
davvero nella sua logica.

Sto realizzando una sorta di gestione utenti. Ogni utente oltre ai campi
"standard" (name, surname, email, user, pass...) ha un utente "friend".
Significa che ciascun utente potrà scegliere tra gli altri utenti un
amico.

Ovviamente questo non è un campo obbligatorio (altrimenti il primo come
farebbe a registrarsi??!!??).

Il primo problema che mi è giunto è quello di mostrare una select contenente
i nomi degli utenti già inseriti, dando la possibilità al nuovo utente di
scegliersi l'amico in maniera facile.

Il problema qualè? Praticamente nel momento della creazione dell'utente la
select deve mostrare TUTTI gli utenti inseriti nel DB, mentre nella
modifica
deve mostrare TUTTI gli utenti TRANNE quello corrente che sta
modificando il
profilo.

Ho utilizzato questa soluzione, anche se un po' di comodo e troppo poco
elegante
<%=select("user", "user_id", User.find(:all, :conditions => "users.id <>
#{@
user.id|0}").collect {|p| [ p.username, p.id ] }, {:include_blank =>
true})
%>

Praticamente se @user esiste aggiungo un "<> id" alla query, altrimenti
aggiungo "<> 0" che, non esistendo nessun utente con id = 0, mi ritorna
tutti gli utenti.

Mi era venuta in mente anche l'idea di inserire un if nella vista
discriminando su @user e utilizzando due select() diverse, una con la
clausula <> user.id e l'altra senza clausole.

Cosa mi consigliereste??

grazie

--
everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away
Nicholas W. (Guest)
on 2007-04-09 06:19
(Received via mailing list)
Il giorno 08/apr/07, alle ore 22:41, tarini ha scritto:

>
> Il problema qualè? Praticamente nel momento della creazione
> <%=select("user", "user_id", User.find(:all, :conditions =>
> "users.id <> #{@
> user.id|0}").collect {|p| [ p.username, p.id ] }, {:include_blank
> => true})
> %>
>
> Praticamente se @user esiste aggiungo un "<> id" alla query,
> altrimenti
> aggiungo "<> 0" che, non esistendo nessun utente con id = 0, mi
> ritorna
> tutti gli utenti.

Mai, mai, mai, mai, mai fare cose così dentro una vista. Quella roba
va nel controller.

> Mi era venuta in mente anche l'idea di inserire un if nella vista
> discriminando su @user e utilizzando due select() diverse, una con la
> clausula <> user.id e l'altra senza clausole.
>
> Cosa mi consigliereste??

Ma sono 2 azioni differenti o no ? Se si popoli le tue variabili nel
controller in base a quello che ti serve, altrimentiti serve un modo
per differenziare, e direi che new_record? fa al caso tuo.

   ngw

--
Nicholas W.
removed_email_address@domain.invalid
http://www.tochunky.org
tarini (Guest)
on 2007-04-09 11:52
(Received via mailing list)
quindi creo una nuova variabile @possibleFriends nel controller e la
loopo
nella vista creando le options?

thanks :)

Il 09/04/07, Nicholas W. <removed_email_address@domain.invalid> ha scritto:
> > "friend".
> > utente di
> > Ho utilizzato questa soluzione, anche se un po' di comodo e troppo
> > aggiungo "<> 0" che, non esistendo nessun utente con id = 0, mi
> > Cosa mi consigliereste??
> http://www.tochunky.org
>
>
> _______________________________________________
> Ml mailing list
> removed_email_address@domain.invalid
> http://lists.ruby-it.org/mailman/listinfo/ml
>



--
everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away
Nicholas W. (Guest)
on 2007-04-10 01:41
(Received via mailing list)
Il giorno 09/apr/07, alle ore 09:51, tarini ha scritto:

> quindi creo una nuova variabile @possibleFriends nel controller e
> la loopo
> nella vista creando le options?

Eh ? :p
No, ti ho detto che se l'azione e' la stessa (e che mi caschi un
orecchio ora se capisco perche' non hai usato due azioni
differenti :p) puoi usare new_record? per capire se il tuo utente è
nel db o meno, se è nel DB metti la condition, altrimenti find(:all).
That's all, folks.
new_record? lo trovi qui:
http://api.rubyonrails.org/classes/ActiveRecord/Ba...

HTH,
   ngw

--
Nicholas W.
removed_email_address@domain.invalid
http://www.tochunky.org
tarini (Guest)
on 2007-04-10 12:06
(Received via mailing list)
ok perfetto... grazie mille :)

ciao ciao

Il 09/04/07, Nicholas W. <removed_email_address@domain.invalid> ha scritto:
> differenti :p) puoi usare new_record? per capire se il tuo utente è
> nel db o meno, se è nel DB metti la condition, altrimenti find(:all).
> http://www.tochunky.org
>
>
> _______________________________________________
> Ml mailing list
> removed_email_address@domain.invalid
> http://lists.ruby-it.org/mailman/listinfo/ml
>



--
everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away
This topic is locked and can not be replied to.