我应该从哪里开始创建一个扩展Rails 3发现的插件?

时间:2011-08-03 22:47:05

标签: ruby-on-rails ruby-on-rails-3 plugins rubygems find

在Rails 3之前,创建一个扩展find的插件相对容易:基本上覆盖find中的ActiveRecord::Base方法本身,如果需要,可以调用super

现在Arel正在Rails 3中使用,(特别是我正在使用Rails 3.1),我将如何做类似的事情呢?问题是许多旧的find方法已被弃用,支持whereorderlimit等范围。在Rails的哪个位置我应该尝试覆盖默认行为吗?

我确信它会比这更复杂,但我能找到的最接近的事情似乎是construct_finder_arel ActiveRecord::Base {{1}}方法。

1 个答案:

答案 0 :(得分:-1)

在挖掘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