Mixin方法调用

时间:2014-08-14 04:53:14

标签: ruby mixins

我正在寻找一些可以让我像Mongoid那样做的事情:

class Artist
  include Mongoid::Document
  field :name, type: String
end

基本上,包含一个模块并使用其中声明的方法。但是我收到以下错误:

undefined method `method_name'

以下是模块代码:

module Mod
  def method_name # or self.method_name results the same
  end
end

这是类代码:

class Klass
  include Mod
  method_name 'param'
end

我的红宝石版本为2.1.2

编辑:

我在模块中使用了它,它完美地运行:

def self.included(target)
  target.extend self
end

1 个答案:

答案 0 :(得分:1)

您需要extend而不是include

#!/usr/bin/env ruby

module Task
  def method_name(*args)
  end
end

class Klass
  extend Task
  method_name :param
end