模型中未定义的模块方法

Posted

技术标签:

【中文标题】模型中未定义的模块方法【英文标题】:Undefined module method in model 【发布时间】:2020-04-04 12:17:08 【问题描述】:

lib/modules/file_type.rb

module Modules
  module Type
    def friend_name(type:)
      ...
    end
  end
end

app/models/car.rb

class Car < ApplicationRecord
  include Modules::Type

  def self.to_array
  ...
  name = friend_name(type: 'test')
  ...
  end
end

但我收到此错误:

undefined method `friend_name'

我不确定为什么会收到此错误。

谁能帮帮我?

【问题讨论】:

friend_nameCar 类的实例方法,所以Car.new.friend_name(type: 'test') 有效,但Car.friend_name(type: 'test') 无效。 这段代码应该实现什么? 【参考方案1】:

如果friend_name 是一个类方法,那么在Car 模型中使用extend 而不是include

extend Modules::Type

更多关于includeextend之间区别的信息可以在这里找到-

What is the difference between include and extend in Ruby?

希望有帮助!

【讨论】:

以上是关于模型中未定义的模块方法的主要内容,如果未能解决你的问题,请参考以下文章

spyder 中未定义模块 scikit_learn

为啥在带有 http 承诺的打字稿模块中未定义“this”

rails动作控制器中未定义的方法“devise_for”

Python 错误:在 SWIG 生成的 C++ 模板代码模块中未定义构造函数

Apache:无效命令“SSLEngine”,可能拼写错误或由服务器配置中未包含的模块定义

错误 ReferenceError: Angular 电子应用程序中未定义 cv