簡體   English   中英

如何從模塊中獲取擴展模塊的類的名稱?

[英]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一些排列,但我只是返回了DashboardModule ,而不是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM