# Ruby 1.9.1 strani problemi con la sintassi

**URL:** <https://www.ruby-forum.com/t/ruby-1-9-1-strani-problemi-con-la-sintassi/187937>\
**Category:** IT\
**Created:** [May 2, 2010, 5:25pm UTC](https://www.ruby-forum.com/t/ruby-1-9-1-strani-problemi-con-la-sintassi/187937 "2010-05-02T17:25:01Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![stanley](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ab992/32.png) [@stanley](https://www.ruby-forum.com/u/stanley)\
**Post date:** [May 2, 2010, 5:25pm UTC](https://www.ruby-forum.com/t/ruby-1-9-1-strani-problemi-con-la-sintassi/187937/1 "2010-05-02T17:25:01Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![stanley](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ab992/32.png) [@stanley](https://www.ruby-forum.com/u/stanley)\
**Post date:** [May 3, 2010, 10:15am UTC](https://www.ruby-forum.com/t/ruby-1-9-1-strani-problemi-con-la-sintassi/187937/2 "2010-05-03T10:15:07Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![stanley](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ab992/32.png) [@stanley](https://www.ruby-forum.com/u/stanley)\
**Post date:** [May 3, 2010, 4:40pm UTC](https://www.ruby-forum.com/t/ruby-1-9-1-strani-problemi-con-la-sintassi/187937/3 "2010-05-03T16:40:19Z")

</div>

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:
