2012-11-15 96 views
0

我在我的/應用/ 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 modulehttps://gist.github.com/1014971的信息,但好像當我的模型繼承自ActiveRecord::Base時,情況就不同了。後面的這些文章據說可以解釋這一點,但我不知所措。

我嘗試了一些置換與superclass.nameDashboard.my_function內,但我只是得到Dashboard或退回Module,而不是MyModel

任何人誰可以闡明如何做到這一點將不勝感激。

+0

做你的方法必須是類方法(..can你做myModel - > MyModel.first.my_function)的my_function調用)? – flynfish

回答

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你只需直接調用它在你的模型類 - >MyModel.my_function將返回MyModel