active_support / inflector如何包含在内?

时间:2016-11-30 18:44:58

标签: ruby-on-rails ruby

我需要active_support/inflector,现在我可以在字符串上使用pluralize方法了。

require 'active_support/inflector'

module Foodie
  class Food
    def self.pluralize(word)
      word.pluralize
    end
  end
end

p Foodie::Food.pluralize("foo") #=> foos

但我希望必须将ActiveSupport::Inflector模块作为mixin包含在其中才能发挥作用。

为什么我不需要像:

module Foodie
  class Food
    include ActiveSupport::Inflector
    def self.pluralize(word)
      word.pluralize
    end
  end
end

p Foodie::Food.pluralize("foo") #=> foos

此外,上述示例仍有效。

我认为需要文件的重点只是让您可以访问该文件中的classes / modules / methods / variables,但它并不一定包含所有模块和类中的功能。

也许,是因为带有Inflector模块的ruby文件正在打开字符串类吗?就像在这个例子中一样:

foo.rb:

module Foo
end

class String
  def cats  
    self + " cats"
  end
end

bar.rb:

require_relative 'foo'

p "foobar".cats #=> "foobar cats"

会喜欢一些指导:)