我有一个有很多书籍的作者模型。
我已经覆盖了可以通过标题找到的书籍
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")
的操作,则此方法似乎无法调用。
有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
由于您正在浏览books
集合,因此您实际上正在CollectionProxy上调用find
。您可以通过将块传递给has_many
来扩展方法,就像这个帖子中的答案一样:Rails: Overriding ActiveRecord association method