使用动态模型名称创建记录

时间:2014-12-23 05:27:29

标签: ruby-on-rails ruby

假设模型'名称为User, Order, Item

怎么做

循环中动态地

User.create, Order.create, Item.create

实施例

    ["User", "Order", "Item"].each do |MODEL|
        MODEL.create
    end

3 个答案:

答案 0 :(得分:3)

您也可以使用constantize

["User", "Order", "Item"].each do |model|
    model.classify.constantize.create(.......)
end

Object.const_get是ruby方法,答案来自八月

嗯,constantize是方法。

答案 1 :(得分:1)

使用Object.const_getdocumentation):

["User", "Order", "Item"].each do |model|
  Object.const_get(model).create
end

答案 2 :(得分:0)

而不是使用字符串数组,为什么不直接使用类呢?

[User, Order, Item].each do |klass|
  klass.create
end