Недефиниран метод при включване на вградени документи на mongoid в колекции inherited_resource

Имам няколко монгоидни модела:

class Album
  include Mongoid::Document
  field :name, type: String
  embedded_in :band
end
class Band
  include Mongoid::Document
  field :name, type: String
  embeds_many :albums
end

И се опитвам да накарам inherited_resources да включи вградените албуми в json за групи, така:

class BandsController < InheritedResources::Base
  respond_to :html, :xml, :json
  def permitted_params
    params.permit!
  end
protected
  def collection
    @bands ||= end_of_association_chain.includes(:albums)
  end
end

Но получавам следната грешка, когато се опитвам да извлека списъка с ленти:

undefined method `eager_load' for Mongoid::Relations::Embedded::Many:Class

Някаква идея какво може да правя погрешно?


person cayblood    schedule 01.10.2013    source източник
comment
Не е нужно да използвате includes(:albums), защото вашите албуми вече са вградени в съответната лента. Следователно извличането на група ще извлече и всички нейни албуми едновременно. Вижте я като книга, ако закупите книга от магазина, страниците вече са вътре, не е нужно да уточнявате, че искате книгата с нейните страници.   -  person Raindal    schedule 01.10.2013
comment
Благодаря Sparda, но когато извлека json колекцията на моите групи, бих искал колекцията да включва вложен json на албумите. В момента вградените албуми не се показват в json. Някаква идея как да направя това?   -  person cayblood    schedule 02.10.2013


Отговори (1)


До голяма степен съм сигурен, че грешката тук е, защото презаписвате collection метод. collection е вътрешен метод, който mongoid използва за извършване на операции в колекцията, така че предполагам, че ако презапишете, това ще доведе до някои конфликти.

person Arthur Neves    schedule 01.10.2013