私はUser
という名前のRubyオブジェクト(特にActiveRecordオブジェクト)を持っています。 find_by_id
,find_by_auth_token
などのメソッドに応答します。ただし、これらはdef
またはdefine_method
で定義されたメソッドではありません。代わりに、method_missing
で処理される動的メソッドです。オブジェクト#メソッドと動的レスポンダ
私は例えば、Object#method
を経由してこれらの方法のいずれかへの参照を取得したいと思います。:
User.method(:find_by_auth_token)
これはしかし作品のようにそれは見ていません。私が思いついた最善の解決策は次のとおりです:
proc { |token| User.find_by_auth_token(token) }
このようなラッパーメソッドを使用すると、他の方法がありますか?ダイナミックメソッドにObject#method
を実際に使用できませんか?
将来的にはこれにつまずき、誰のために、これらの動的ファインダーメソッドは、Railsの中で廃止される予定4.0。私は個人的にそれらの上に追加の機能を追加することに慎重になるだろう。 https://github.com/rails/activerecord-deprecated_finders –