Использование Mongoid 2.4.5 на Rails 3.2.1
У меня есть модель Book
, которая has_many :pages
.
class Book
include Mongoid::Document
has_many :pages
end
class Page
include Mongoid::Document
field :page_number
belongs_to :book
validates_uniqueness_of :page_number, scope: :book
end
Я использую вложенные ресурсы, чтобы я могполучить URL-адреса вроде /books/4f450e7a84b93e2b44000001/pages/4f4bba1384b93ea750000003/
То, что я хотел бы сделать, это использовать URL-адрес типа /books/4f450e7a84b93e2b44000001/pages/3/
, чтобы получить третью страницу в этой книге.
Теперь сутьвопроса: Я хочу найти страницу с помощью вызова типа Book.find('4f450e7a84b93e2b44000001').pages.find('3')
или как Book.find('4f450e7a84b93e2b44000001').pages.find('4f4bba1384b93ea750000003')
Я знаю, что могу переопределить метод find
в Page
чем-то вроде
class << self
def find(*args)
where(:page_number => args.first).first || super(args)
end
end
Но, похоже, это не оказывает никакого влияния на запрос в области book.pages.find('3')
, так как кажется, что поиск в области использует другой метод поиска.
Как конкретно переопределить поискметод, используемый book.pages.find('3')
?