[英]How do I get the name of a class extending a module, from the module?
我的/ 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
)。
我確實從模塊和https://gist.github.com/1014971中找到了有關Get類名的一些信息,但似乎當我的模型繼承自ActiveRecord::Base
,它是不同的。 據說這些文章的后者解釋了這一點,但我不知所措。
我嘗試使用Dashboard.my_function
superclass.name
一些排列,但我只是返回了Dashboard
或Module
,而不是MyModel
。
任何能夠闡明如何做到這一點的人將不勝感激。
通過使用extend
,您將創建MyModel
類的模塊方法類方法。 嘗試這個:
module Dashboard
def my_function
self.name
end
end
class MyModel < ActiveRecord::Base
require "dashboard"
extend Dashboard
# ...
end
而不是將其稱為MyModel::Dashboard.my_function
您只需在模型類上直接調用它 - > MyModel.my_function
將返回MyModel
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.