返回rails中命名参数的内容

时间:2017-02-20 16:16:55

标签: ruby-on-rails ruby

我已经创建了一个帮助器来返回一个数组,具体取决于参数。

self.modules(package)
  package1 = [:mod1, :mod2, :mod5]
  package2 = [:mod3, :mod9, :mod10]
  package3 = [:mod4, :mod6, :mod7, :mod8, :mod7]
  all = package1 + package2 + package3

  return package1 if package == 'package1'
  return package2 if package == 'package2'
  return package3 if package == 'package3'
  return all if package == 'all'
end

轨道中是否有可能只是说

return package

我已经尝试了 package.to_sym ,但它不起作用。

2 个答案:

答案 0 :(得分:2)

执行所需操作的一种方法是将选项组合为哈希:

self.modules(package)
  packages = {
    package1: [:mod1, :mod2, :mod5],
    package2: [:mod3, :mod9, :mod10],
    package3: [:mod4, :mod6, :mod7, :mod8, :mod7]
  }
  packages[:all] = packages.values.flatten

  return packages[package.to_sym]
end

这也可以让你避免元编程(说过这个我并不是说元编程很糟糕,但IMO在给定的情况下是不必要的)

答案 1 :(得分:2)

尝试

self.modules(package)
  package1 = [:mod1, :mod2, :mod5]
  package2 = [:mod3, :mod9, :mod10]
  package3 = [:mod4, :mod6, :mod7, :mod8, :mod7]
  all = package1 + package2 + package3

  binding.local_variable_get(package)
end