2010-08-29 3 views
0

Ok, donc j'ai la chaîne "Product".Appeler nouveau sur le nom de la chaîne db

table_name = "Product" 

Je ne peux pas faire

table_name.new 

undefined method `new 

donc je tentais de trouver un travail autour comme celui-ci

table_name = table_name.downcase.pluralize 
name = ActiveRecord::Base.connection.tables.select { |t| t == table_name }.first 
name.new 

Je ne suis pas sûr que cela fonctionnera, mais même si elle le fait ressemble un hack, des idées pour nettoyer cela

+0

figured it out eval "instance = # {nom_table} .new" – Trace

+0

Je suggère d'utiliser constantize à la place. –

Répondre

3

Si vous voulez éviter d'appeler eval vous pouvez également faire

"product".camelize.constantize.new

0

essayez ceci:

(instance_eval table_name).new 
Questions connexes