在db字符串名称上调用new

时间:2010-08-29 18:02:41

标签: ruby-on-rails ruby

好的,我有字符串“Product”。

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

我不确定这会起作用,但即使它看起来像黑客,任何想清理它的想法

2 个答案:

答案 0 :(得分:3)

如果您想避免拨打eval,也可以

"product".camelize.constantize.new

答案 1 :(得分:0)

试试这个:

(instance_eval table_name).new