2010-08-29 3 views
0

Итак, у меня есть строка «Продукт».Вызов нового по имени строки db

table_name = "Product" 

Я не могу сделать

table_name.new 

undefined method `new 

Так я пытался найти работу вокруг, как этот

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

Я не уверен, что это будет работать, но даже если это выглядит как хак, любые идеи для его очистки

+0

понял это Eval "экземпляра = # {table_name} .new" – Trace

+0

Я предложил бы использовать вместо constantize. –

ответ

3

Если вы хотите, чтобы избежать вызова eval вы также можете сделать

"product".camelize.constantize.new

Смежные вопросы