Forum: Italian Ruby user group Ricerca all'interno di una collezione

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.
Davide S. (Guest)
on 2008-11-04 16:28
Qualcuno mi sa dire perchè non mi funziona la seguente sintassi ?

Question.find_by_admin_id(session[:admin_id])

Avrei bisogno che mi venisse restituita una collezione di oggetti
Question che abbiano come campo "admin_id" quello contenuto nella
sessione.

Grazie per l'attenzione.
Claudio P. (Guest)
on 2008-11-04 16:48
Davide S. wrote:
> Qualcuno mi sa dire perchè non mi funziona la seguente sintassi ?
>
> Question.find_by_admin_id(session[:admin_id])
>
> Avrei bisogno che mi venisse restituita una collezione di oggetti
> Question che abbiano come campo "admin_id" quello contenuto nella
> sessione.
>
La query ti restituisce il primo record che ha il campo "admin_id"
uguale al valore che passi.

Se vuoi la collezione di tutti i record, prova

Question.find_all_by_admin_id(session[:admin_id])
Davide S. (Guest)
on 2008-11-04 16:52
Anche facendo come dici non funziona.
La collezione risulta vuota.

Forse perchè non ho impostato un valore di default per l'attributo
admin_id ??

In questo caso come posso impostarlo ?
Pietro G. (Guest)
on 2008-11-04 17:01
(Received via mailing list)
2008/11/4 Davide S. <removed_email_address@domain.invalid>:
> Anche facendo come dici non funziona.
> La collezione risulta vuota.
>
> Forse perchè non ho impostato un valore di default per l'attributo
> admin_id ??
>
> In questo caso come posso impostarlo ?

ma tu che risultato vuoi? esistono effettivamente dei record con
l'admin_id che specifichi?
Davide S. (Guest)
on 2008-11-04 17:08
> ma tu che risultato vuoi? esistono effettivamente dei record con
> l'admin_id che specifichi?

Infatti... non credo che esistano... come posso specificare un valore di
default per un attributo di un record ??
Pietro G. (Guest)
on 2008-11-04 17:21
(Received via mailing list)
Il 4 novembre 2008 16.08, Davide S. <removed_email_address@domain.invalid>
ha scritto:
> Infatti... non credo che esistano... come posso specificare un valore di
> default per un attributo di un record ??

perdonami, ti rifaccio la domanda: cosa vuoi che faccia l'applicazione?

se per valore di default intendi un valore da utilizzare quando
session[:admin_id] è nil, la risposta è semplice,

question.find_all_by_admin_id(session[:admin_id] ||
il_valore_che_piace_a_te)

resta da capire qual è, appunto, il valore che piace a te, vale a
dire, cosa vorresti che la query ti restituisse.
Davide S. (Guest)
on 2008-11-04 17:24
Pietro G. wrote:
> Il 4 novembre 2008 16.08, Davide S. <removed_email_address@domain.invalid>
> ha scritto:
>> Infatti... non credo che esistano... come posso specificare un valore di
>> default per un attributo di un record ??
>
> perdonami, ti rifaccio la domanda: cosa vuoi che faccia l'applicazione?
>
> se per valore di default intendi un valore da utilizzare quando
> session[:admin_id] � nil, la risposta � semplice,
>
> question.find_all_by_admin_id(session[:admin_id] ||
> il_valore_che_piace_a_te)
>
> resta da capire qual �, appunto, il valore che piace a te, vale a
> dire, cosa vorresti che la query ti restituisse.

Gli oggetti Question vengono creati tramite il form di uno scaffold.

Io vorrei ottenere una collezione di oggetti Question che abbiano
l'attributo admin_id uguale a quello contenuto nella sessione (che
identifica l'amministratore).

Il problema è che questi oggetti Question hanno l'attributo admin_id,
però non so come impostarlo in fase di creazione della domanda.
Quando creo una domanda, vorrei che il campo admin_id fosse impostato in
automatico al valore session[:admin_id]
Pietro G. (Guest)
on 2008-11-04 17:36
(Received via mailing list)
Il 4 novembre 2008 16.24, Davide S. <removed_email_address@domain.invalid>
ha scritto:
> Il problema è che questi oggetti Question hanno l'attributo admin_id,
> però non so come impostarlo in fase di creazione della domanda.
> Quando creo una domanda, vorrei che il campo admin_id fosse impostato in
> automatico al valore session[:admin_id]

ok, questo devi farlo nel controller, nel punto in cui avviene la
creazione. se hai difficoltà, manda in lista il contenuto del metodo
create del controller.
Davide S. (Guest)
on 2008-11-04 17:40
> ok, questo devi farlo nel controller, nel punto in cui avviene la
> creazione. se hai difficolt�, manda in lista il contenuto del metodo
> create del controller.

  def create
    @question = Question.new(params[:question])
    @question.admin_id = session[:admin_id]
  ...

Ho fatto così, però continua a non mettermi nessun valore nell'attributo
admin_id (che è una foreign key alla classe Admin).
Pietro G. (Guest)
on 2008-11-04 17:46
(Received via mailing list)
Il 4 novembre 2008 16.40, Davide S. <removed_email_address@domain.invalid>
ha scritto:
>  def create
>    @question = Question.new(params[:question])
>    @question.admin_id = session[:admin_id]
>  ...
>
> Ho fatto così, però continua a non mettermi nessun valore nell'attributo
> admin_id (che è una foreign key alla classe Admin).

1) nel ... c'è anche @question.save ?
2) session[:admin_id] ha un valore diverso da nil ?
Davide S. (Guest)
on 2008-11-04 17:50
> 1) nel ... c'� anche @question.save ?
> 2) session[:admin_id] ha un valore diverso da nil ?

Ok, ora funziona... non mi funzionava perchè avevo messo un accessor per
l'attributo... evidentemente lo scaffold crea automaticamente gli
accessor e dà errore se vengono specificati.

Grazie mille.
This topic is locked and can not be replied to.