模型中未定义的模块方法
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_name
是Car
类的实例方法,所以Car.new.friend_name(type: 'test')
有效,但Car.friend_name(type: 'test')
无效。
这段代码应该实现什么?
【参考方案1】:
如果friend_name
是一个类方法,那么在Car
模型中使用extend
而不是include
extend Modules::Type
更多关于include
和extend
之间区别的信息可以在这里找到-
What is the difference between include and extend in Ruby?
希望有帮助!
【讨论】:
以上是关于模型中未定义的模块方法的主要内容,如果未能解决你的问题,请参考以下文章
Python 错误:在 SWIG 生成的 C++ 模板代码模块中未定义构造函数