模型中未定义的模块方法

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?

希望有帮助!

【讨论】:

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