【问题标题】:How do I create global utility functions in rails如何在 Rails 中创建全局实用程序函数
【发布时间】:2012-08-31 19:02:57
【问题描述】:

我需要一个地方来放置全局引用透明的实用程序方法。这些应该可以从 Rails 中的任何地方(模型、视图、控制器和其他任何地方)访问。例如:

bool = GlobalUtilities.to_bool "false"
unicorn = GlobalUtilities.make_me_a "unicorn"

最好的方法是什么?

【问题讨论】:

  • 你是想说GlobalUtilities.make_me_a "pancake"还是只说make_me_a "pancake"

标签: ruby-on-rails ruby


【解决方案1】:

您可以随时将它们粘贴在 /lib 中并要求它们。请参阅bricker's answer——您可以要求从您的application.rb 加载这些模块,这将使它们在任何地方都可以访问。

见:Rails lib directory

【讨论】:

  • 如果您尝试向预先存在的数据类型添加功能,Bill 的回答也不错。
【解决方案2】:

我会为您希望实现的每个行为创建一个描述性命名的文件,并将它们收集到 /lib(或者,更好的是,一个引擎)中。然后,将您想要的功能混合到您希望扩展的类中。例如,在您描述的场景中,您可以将parse_boolean 方法直接添加到String。很漂亮的东西。

/lib/add_parse_boolean_to_string.rb

class String

  def parse_boolean
    self == 'true' # or whatever...
  end

end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多