【问题标题】:Overriding find in Rails model doesn't effect scoped finds在 Rails 模型中覆盖 find 不会影响范围查找
【发布时间】:2014-02-22 04:29:54
【问题描述】:

我有一个拥有_many Books 的 Author 模型。

我已经覆盖了 Books 以便能够通过它们的标题找到

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") 之类的操作,则似乎不会调用此方法。

有没有办法解决这个问题?

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多