С чего мне начать искать плагин, который расширяет поиск Rails 3? - PullRequest
0 голосов
/ 04 августа 2011

До Rails 3 создание плагина для расширения find было относительно простым: в основном переопределял сам метод find в ActiveRecord::Base, вызывая super при необходимости.

Теперь, когда Arelбудучи использованным в Rails 3 (в частности, я использую Rails 3.1), как бы я поступил так же?Проблема в том, что многие старые методы find устарели в пользу таких областей, как where, order, limit и т. Д. В какой момент в исходном коде Rails я должен попытаться переопределить значение по умолчаниюПоведение?

Я уверен, что это будет немного более запутанным, чем это, но наиболее близкая вещь, которую я могу найти, которая кажется подходящей, это метод construct_finder_arel в ActiveRecord::Base.

1 Ответ

0 голосов
/ 09 апреля 2012

После копания через источник Rails, независимо от используемого Arel, метод 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...