如何将带有类的模块包含在另一个类中?

时间:2017-03-21 20:35:33

标签: ruby-on-rails ruby class module

我有类

的模块
module My < Grape::API
  prefix 'api'
  format :json

  class Users
    helpers do
      include My2 #I want put here method 'some_method'
    end
  end

end

我有另一个模块

module My2
  class Circle
    def some_method
      "Hello"
    end
  end
end

我可以做到这一点,但我想知道如何处理班级

module My2
    def some_method
      "Hello"
    end
end

我不理解逻辑......谢谢你 我怎么能以另一种方式做到这一点?

2 个答案:

答案 0 :(得分:1)

您不能使用 include 来包含类,因为它用于包含类中模块的方法。 如果要使用类,请尝试传递类的实例或创建类的方法。

class Foo
  def self.bar
    puts 'class method'
  end

  def baz
    puts 'instance method'
  end
end

Foo.bar # => "class method"
Foo.baz # => NoMethodError: undefined method ‘baz’ for Foo:Class

Foo.new.baz # => instance method
Foo.new.bar # => NoMethodError: undefined method ‘bar’ for #<Foo:0x1e120>

Example

答案 1 :(得分:0)

我可以把

def some_method(x, y)
  My2::Circle.new.some_method(x, y)
end