我不能做這樣的:Ruby類聲明的問題
class Hardware
before_filter
def before_filter
puts "ge"
end
end
它說的before_filter是未定義的方法或變量時,我將它實例化
hd = Hardware.new
,因爲我見過別人把方法名在上課前。只是想知道它是如何工作的。謝謝
我不能做這樣的:Ruby類聲明的問題
class Hardware
before_filter
def before_filter
puts "ge"
end
end
它說的before_filter是未定義的方法或變量時,我將它實例化
hd = Hardware.new
,因爲我見過別人把方法名在上課前。只是想知道它是如何工作的。謝謝
有兩個問題與您的代碼:
這兩個顯然不能工作。
這會工作:
class Hardware
def self.before_filter
puts "ge"
end
before_filter
end
before_filter
是ActiveRecord類方法(請參閱here),所以只有在您的模型繼承自ActiveRecord::Base
(或子類)時纔可用。你能更具體地說明你想做什麼嗎?
你可能只是在尋找:
class Hardware
def initialize
super
before_filter
end
protected
def before_filter
# ...
end
end
要麼改變
def before_filter
到
def self.before_filter
,並把它定義後
OR
評論before_filter
class Hardware
def before_filter
puts "ge"
end
end
和呼叫像
hd = Hardware.new
hd.before_filter
只是爲了澄清:'before_filter'會被調用更多或只要它是隻讀少,不像然後再閱讀一切其他語言執行代碼。這種事情也意味着你不能寫一個類,然後編寫你想包含的模塊。 – 2010-07-16 00:31:05