0

例如,我想创建一个current_server_host返回应用程序当前运行的当前主机的方法。

库/实用程序.rb:

module Utility
  def current_server_host
    request.env['HTTP_HOST']
  end
end

我如何使它在项目范围内可用,我不需要包含任何东西,但可以通过调用 Utility.current_server_host

如何使其特定于我需要调用的类(模型/控制器/视图)include

请回答 RoR 3.2+。

谢谢!

4

1 回答 1

1

要使实用程序方法可用作另一个类中的类方法,请使用扩展:

class Widget
  extend Utility
end

# provides
Widget.current_server_host

ruby 模块可以以与扩展类相同的方式扩展自身:

module Utility
  extend self

  def current_server_host
    request.env['HTTP_HOST']
  end
end

# provides
Utility.current_server_host

如果要为类的实例提供 Utility 方法,请使用 include:

class Widget
  include Utility
end

widget = Widget.new
widget.current_server_host
于 2012-09-22T23:05:13.300 回答