2011-08-03 8 views
0

Rails 3以前では、findに拡張するプラグインを作成するのは比較的簡単でした。のメソッド自体を基本的にオーバーライドし、必要に応じてsuperを呼び出します。Rails 3が発見したプラグインを作成する場所はどこから始めるべきですか?

ArelはRails 3で使用されています(具体的には私はRails 3.1を使用しています)。同様のことをどうやってやりますか?問題は、古いfindメソッドの多くは、whereorderlimitなどのスコープを優先して非難されているということです。Railsソースのどの時点でデフォルトの動作を上書きする必要がありますか?

これより少し畳み込まれていると確信していますが、適切であると思われる最も近いものはconstruct_finder_arelメソッドActiveRecord::Baseです。

答えて

-1

Arelが使用されているかどうかに関係なく、Railsソースを掘り下げた後、find_by_sqlメソッドが検索を実行しているどのモデルでも呼び出されます。これはalias_method_chainで次のように拡張できます:

find_by_sql_with_customization(*args) 
    results = find_by_sql_without_customization 
    # do something with results here 
    results 
end 

alias_method_chain :find_by_sql, :customization 
+0

これが正しい答えであると考えている理由は分かりません。あなたはコメントで説明することを心配していますか、またはあなたのインターネット匿名の背後に隠れるつもりですか? –

関連する問題