【问题标题】:Store model name in an array rails将模型名称存储在数组 rails
【发布时间】:2015-09-28 06:02:09
【问题描述】:

我的要求是这样的(但这不起作用)

array=["Menu","Article","Comment"]
array.each do |x|
   x.find 1     # the x is of class String
   p x.id
end

数组的每个元素都是我的应用程序中的模型名称。在循环中获得的“x”是类字符串,但我希望它是一个模型。

我想在每个模型上执行相同的任务,这样做可以减少我程序中的大约 60 行代码。谁能帮忙..

【问题讨论】:

    标签: ruby-on-rails arrays model


    【解决方案1】:

    你可以像这样使用constantize

    array=["Menu","Article","Comment"]
    array.each do |x|
      klass = x.constantize
      klass.find 1
      p klass.id
    end 
    

    http://apidock.com/rails/String/constantize

    【讨论】:

      【解决方案2】:

      在 ActiveSupport(Rails 的一部分)中,constantize 上提供了一种方法 Strings,它可能会对您有所帮助:

      array=["Menu","Article","Comment"]
      array.each do |x|
        instance = x.constantize.find 1
        p instance.id
      end
      

      【讨论】:

        【解决方案3】:

        你可以这样做:

        array=["Menu","Article","Comment"]
        array.each do |x|
            a = (Object.const_get x).find 1
            p a.id
        end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-21
          • 2011-09-17
          • 1970-01-01
          • 2013-02-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多