我試圖理解這是如何工作的,如果有人可以幫助我會很棒。我有一個模塊,它看起來像下面:ClassMethods之外的Ruby模塊方法
module Activity::Track
extend ActiveSupport::Concern
module ClassMethods
def track_now(name, options={})
add_activity activity(verb: name)
end
end
protected
def activity(options={})
end
def add_activity(activity_item)
end
end
我在做什麼在呼喚從我的模型,這是很好的和行之有效的方法track_now
,但我不能調用add_activity
和activity
方法。我不知道如何從ClassMethods
模塊中調用它們。有人可以解釋我如何做到這一點?
我在另一個項目中看到了這個,但是通過創建一個define_method
然後通過send :after_create :define_method
來調用這個保護方法。這個怎麼用?
你是否在某處混入了你的模塊? – user2422869
我做'包括Timeline :: Track',然後從我的模型track_now(:new_item,user :: pilot)調用該方法,這是你要求的嗎? – Peter
簡單地說:你不能。一個類不知道它的實例,因此「類方法」不能調用一個實例方法。 –