2012-01-19 6 views
1

私のモデルのいくつかは、使用して、液体のメソッドが定義されている:モデルに使用可能なすべての液体メソッドを公開するにはどうすればよいですか?

class MyModel < ActiveRecord::Base 
    liquid_methods :created_at, :foo, :bar, :baz 
end 

にはどうすれば(ハッシュや配列で、私が思う)モデルのために利用可能な方法のリストを得ることができますか?私はフォーラムの投稿や電子メールのテンプレートのようなものでそれらを使用するユーザーに利用可能なメソッドのリストを出力したいと思います。それは、液体法に関する異なる動作を持つことになります場合、私は知りませんが、あなたが行うことができます

答えて

1

不要なインスタンス化を:あなたはモデルにliquid_methods呼び出すと

MyModel::LiquidDropClass.public_instance_methods - Liquid::Drop.public_instance_methods 
# => [:foo, :bar, :baz] (or whatever your liquid methods are) 

は、液体がLiquidDropClassを作成しますあなたのモデルの名前空間内のクラスであり、液体メソッドを保持します。

-1

MyModel.methods 
MyMethod.new.methods 

いずれかの方法を、クラスやインスタンスで、あなたは配列を取得するために.methodsを呼び出すことができますそのクラスまたはインスタンスで使用する有効なメソッドであるシンボルの数。その後、これが機能するなど.methods.sortまたは.methods.sort_by

+0

こうすることで、私は次のようになります: '[333] liquid_methods(* arg1)Class(Module)' MyModel.liquid_methodsは何も返しません。提案? – MrDerp

+0

このソリューションは、液体メソッドだけでなく、すべてのメソッドを返します。 – JellicleCat

1

のようなものを行うことができます。自分で保存

MyModel.new.to_liquid.methods - Liquid::Drop.new.methods 
関連する問題