Ricerca all'interno di una collezione


#1

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.


#2

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


#3

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 ?


#4

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 ??


#5

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?


#6

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]


#7

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.


#8

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).


#9

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 ?

#10
  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.


#11

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.