2012-09-13 19 views
0

我有以下如何调用类,after_create方法,无论是从规范或导轨控制台

class Item < ActiveRecord::Base 
    after_create TellMe 
end 

class TellMe 
    def self.after_create(model) 
end 

,并希望能够做这个事情类似:

i=Item.new :name => 'my test name' 
i.send(:TellMe.after_create) 

相似我怎么可以用公共方法打电话发送?它看起来像我可以做

i.instance_eval 'TellMe.after_create(self)' 

,但感觉有点丑陋的(除其他事项外)

+1

究竟是什么你想要做什么?你可以把它与真实代码的上下文吗? –

+0

如果你有'after_create:tell_me',你可以有'Item.send(:tell_me)'并且在不同的上下文中使用,上面的代码非常接近实际的调用。想要以类似的方式访问此功能。 Prob一个愚蠢的问题 – timpone

回答

1

触发回调的唯一方法是做一个合格的事件,在这种情况下,创建一个项目。

的解决方法是,你想要什么,你可以只创建另一个方法,将做什么的回调会做,你将能够访问它像正常

Class Item < ActiveRecord::Base 

    def tellme(params) 
    TellMe.function(params) 
    end 

end 
+0

这是一个回调是不是真的在这里相关,是吗。我正试图用当前模型的上下文来调用它。这是我对发送信息的印象。我错过了什么吗? – timpone

+0

你可以简单地将你想要的任何参数传递给函数。在类函数内部,您可以通过'self'访问该模型的所有数据。 –