salve a tutti,
sto provando ruby 1.9.1 con rails 2.3.5. ho un pezzo di codice con un
metodo che
con la 1.8.7 non mi ha dato problemi:
def find_by_role(role_name, *args)
find(:all, :conditions => { :role_id => @@roles[role_name] }, *args)
end
ma ricevo diversi errori di sintassi:
- ‘unexpected tSTAR’ nella riga 2
- se provo a rimuovere l’asterisco da args, l’errore esce sull’ultima
parentesi
tonda di chiusura ‘unexpected tRPAREN’
rileggendo in giro le varie documentazioni di ruby 1.9 non mi risultano
cambiamenti di sintassi in merito.
qualcuno di voi ha idea di cosa possa essere?
grazie in anticipo
A.
def find_by_role(role_name, *args)
find(:all, :conditions => { :role_id => @@roles[role_name] }, *args)
end
se hai un terzo parametro è meglio che specifichi che il secondo è un
hash (mettendo le graffe).
poi dipende cosa devi fare con il terzo, probabilmente devi fare un
merge con l’hash…
find(:all, {:conditions => { :role_id => @@roles[role_name] }}, *args)
Grazie Andrea, ottimo consiglio
seguendo le tue indicazioni, ho risolto modificando in questo modo:
def find_by_role(role_name, args={})
args.merge(:conditions => { :role_id => @@roles[role_name] })
find(:all, *args)
end
semplicemente mi occorreva un metodo find_by_role da rendere disponibile
in un modello di ActiveRecord. perciò doveva comunque accogliere gli
eventuali argomenti accettati da ‘find’
grazie di nuovo,
A.
Il 03/05/2010 10:14, Andrea F. ha scritto: