我的/ app / models文件夹中有以下模型:
class MyModel < ActiveRecord::Base
require "dashboard"
extend Dashboard
# ...
end
然后我在/ lib文件夹中有一个名为dashboard.rb的文件,其中包含以下代码:
module Dashboard
def self.my_function
# --> My question pertains to what I need to put here...
end
end
我想在MyModel::Dashboard.my_function
中编写一行代码,以便返回我的模型名称(在本例中为MyModel
)。
我确实在Get class name from a module和https://gist.github.com/1014971上找到了一些信息,但似乎当我的模型继承自ActiveRecord::Base
时,它就不同了。据说这些文章的后者解释了这一点,但我不知所措。
我在superclass.name
内尝试了Dashboard.my_function
的一些排列,但我只是返回Dashboard
或Module
,而不是MyModel
。
任何能够阐明如何做到这一点的人都将不胜感激。
答案 0 :(得分:2)
通过使用extend
,您正在制作MyModel
类的模块方法类方法。试试这个:
module Dashboard
def my_function
self.name
end
end
class MyModel < ActiveRecord::Base
require "dashboard"
extend Dashboard
# ...
end
而不是将其称为MyModel::Dashboard.my_function
,而不是直接在模型类上调用它 - &gt; MyModel.my_function
会返回MyModel