当前位置: 首页 > 知识库问答 >
问题:

Mixin方法调用

章盛
2023-03-14

我正在寻找一些可以让我像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

我的ruby版本是2.1.2

编辑:

我在模块中使用了这个,它工作得很好:

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

共有1个答案

裴华荣
2023-03-14

您需要扩展它,而不是使用包含:

#!/usr/bin/env ruby

module Task
  def method_name(*args)
  end
end

class Klass
  extend Task
  method_name :param
end
 类似资料:
  • 我想在名为Debug的mixin(模块)的实例方法上运行一个基本的RSpec单元测试。以下是调试mixin的文件内容: 当我运行irb并包含调试混入和命令require_relative时/混合/调试。rb’和 然后,如果我用以下RSpec单元测试运行以确认RSpec上下文可以访问混合的实例方法,则测试成功通过: 最后,我将RSpec单元测试更改为如下所示,因此它实际上调用了class\u信息 调

  • 好的,我有一个网页,为用户提供了一些步骤,还有一个mixin,它处理这些步骤的属性和逻辑,比如当前/下一步的值,检查用户从每个步骤前进到下一个步骤,等等。 现在我必须添加一个新的功能,只有在某个步骤之后才能执行,所以我想能够做的是调用原始的mixin方法,用户每次进入下一步添加此功能时都会调用该方法。 更清楚地说,在webapp的许多页面中使用了混合方法,所以我想覆盖扩展它的组件中的罪魁祸首混合方

  • 我目前正在为Minecraft Fabric编程一个插件/服务器端模块,它可以改变玩家的死亡。更准确地说:当玩家死亡时,他们应该在某些情况下保留他们的库存。 为了实现这一点,我有一个扩展net的类。我的世界。实体游戏者PlayerEntity和“混入”课堂。我的世界。服务器网络服务器播放属性。现在,如果我调用此方法,我将onDeath(DamageSource source)中的方法调用重定向到我

  • 描述 (Description) 如果要匹配表达式上的简单值或参数数量,则可以使用保护。 它与mixin声明相关联,并包含附加到mixin的条件。 每个mixin将有一个或多个用逗号分隔的守卫; 警卫必须括在括号内。 LESS使用受保护的mixins而不是if/else语句,并执行计算以指定匹配的mixin。 下表描述了不同类型的mixins防护以及描述。 Sr.No. 类型和描述 1 Guard

  • 描述 (Description) 每当mixin在另一个mixin中定义时,它也可以用作返回值。 例子 (Example) 以下示例演示了mixin inside mixin中使用mixin inside mixin的LESS文件 - <html> <head> <link rel = "stylesheet" href = "style.css" type = "text/cs

  • 描述:记录一个mixin(混入)对象。 语法 @mixin [<MixinName>] 概述 您可以使用@mixin标签标识该对象是一个mixin(混入),旨在表明该对象的属性和方法混入到其他对象。然后,可以将@mixes标签 添加到使用了该 mixin(混入)的对象上。 例子 例如,使用 @mixin : /** * This provides methods used for event h