Ruby 1.9.1 strani problemi con la sintassi

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 :wink:
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 :wink:

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’ :wink:

grazie di nuovo,
A.

Il 03/05/2010 10:14, Andrea F. ha scritto: