在Rails模型中重写find不会影响范围查找

时间:2014-02-22 04:29:55

标签: ruby-on-rails-3

我有一个有很多书籍的作者模型。

我已经覆盖了可以通过标题找到的书籍

class Book < ActiveRecord::Base    
...
 def self.find(input)
    if input.is_a?(Integer) || input.integer?
      super(input)
    else
      return Book.find_by_title(input)
    end
  end
...
end

这在大多数情况下都可以正常使用,但是如果我执行类似author.books.find("Some Book Title")的操作,则此方法似乎无法调用。

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

由于您正在浏览books集合,因此您实际上正在CollectionProxy上调用find。您可以通过将块传递给has_many来扩展方法,就像这个帖子中的答案一样:Rails: Overriding ActiveRecord association method