Spree从表名中获取模型名称常量

时间:2014-04-29 11:07:02

标签: ruby-on-rails spree

我正在尝试在Spree迁移中完成以下任务:

ActiveRecord::Base.connection.tables.each do |table|
    table.constantize.update_all(user_id: 1)
end

:user_id存在于数据库中的所有表中。

我想将所有表中的:user_id列更新为1。

"spree_products".constantize 

没有返回" Spree :: Product"

我已成功使用以下代码更新user_ids:

ActiveRecord::Base.connection.tables.each do |table|
    Spree.const_get(table.gsub("spree_", "").classify).update_all(user_id: 1)
end

1 个答案:

答案 0 :(得分:0)

您可以使用_ gsub /并使用classify

> "spree_products".gsub('_', '/').classify
# => "Spree::Product"