Question sur la syntaxe de ruby

Bonsoir,

Etant pas un pro du ruby je me pose une question sur la possibilité et
donc la syntaxe de ruby. Dison que j’ai un modèle nommé Customer
j’aimerais savoir si il est possible a partir d’un string contenant
“Customer” est ce qu’il est possible de faire appel aux méthodes de
Customer par exemple j’aimerais pouvoir faire “Customer”.new ce
équivaudrait a un Customer.new

Cordialement.

Le 04/01/08, adiates[email protected] a écrit :

Etant pas un pro du ruby je me pose une question sur la possibilité et
donc la syntaxe de ruby. Dison que j’ai un modèle nommé Customer
j’aimerais savoir si il est possible a partir d’un string contenant
“Customer” est ce qu’il est possible de faire appel aux méthodes de
Customer par exemple j’aimerais pouvoir faire “Customer”.new ce
équivaudrait a un Customer.new

tu peux faire en Rails :

klass = “Customer”.constantize
customer = klass.new

avec “customer”, tu utilises généralement la méthode classify avant :

klass = “customer”.classify.constantize
customer = klass.new

– Jean-François.


Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)

adiates wrote:

Bonsoir,

Etant pas un pro du ruby je me pose une question sur la possibilité et
donc la syntaxe de ruby. Dison que j’ai un modèle nommé Customer
j’aimerais savoir si il est possible a partir d’un string contenant
“Customer” est ce qu’il est possible de faire appel aux méthodes de
Customer par exemple j’aimerais pouvoir faire “Customer”.new ce
équivaudrait a un Customer.new

C’est possible :

1/ si tu fais ça sous Rails :

string = “Customer”
string.constantize.new

2/ Sinon en pur Ruby:

eval “#{string}.new”

ceci dit :

  • ça n’est pas vraiment clair comme code,
  • si c’est beaucoup utilisé, il faut savoir que c’est lent,
  • si tu ne maîtrises pas le contenu de string, tu as des failles de
    sécurité béantes…

Ça serait mieux que tu nous expliques ton besoin initial, je soupçonne
qu’il y a d’autres manières plus robustes et plus claires d’y répondre :slight_smile:

Lionel

Merci à tous les deux pour vos réponses aussi rapides. Pour l’instant
c’est juste de la curiosité par rapport à ruby donc pas de besoin
précis mais je tiens compte des remarques.

On 4 jan, 01:19, Lionel B. [email protected]