クエリ スコープが受け取る必要があるパラメーターの数を実行時に発見したいと考えています。
私は次のことを試しました:
class Test < ActiveRecord::Base
scope :my_scope, Proc.new{ |q, x|
where("attr = ? and attrb = ?", q, x)
}
def self.my_scope_args
self.method(:my_scope).parameters
end
end
しかし、呼び出し
Test.my_scope_args
[[:rest, :args]] を返します。Proc オブジェクトを直接反映すると、目的の結果が得られます。
Proc.new{ |q, x|
where("attr = ? and attrb = ?", q, x)
}.parameters
[[:opt, :q], [:opt, :x]] を返す
スコープの基になる Proc オブジェクトへの参照を取得して、それを反映できる方法はありますか?