mongoid область с указанным объектом в качестве критерия - PullRequest
2 голосов
/ 02 апреля 2011

У меня есть следующая область действия для модели Mongoid в Rails 3:

class Expert
  include Mongoid::Document
  referenced_in :category

   scope :currently_available, lambda { |category, limit|
    limit ||= 5
    {
      :where => {:category => category, :state => 'available'}, 
      :limit => limit
    }
  }

category вот пример ссылочной модели:

class Category
  include Mongoid::Document
  references_many :experts, :inverse_of => :category

Когда я вызываю область как Expert.currently_available(Category.first, 5), я получил объект Criteria:

ruby-1.9.2-p136 :110 > Expert.currently_available(Category.first, 5)
 => #<Mongoid::Criteria
  selector: {:category=>#<Category _id: 4d95ea8773fdea4c47000003, _type: nil, _id: BSON::ObjectId('4d95ea8773fdea4c47000003'), title: "Tax Advisors", price: 5.5>, :state=>"available"},
  options:  {:limit=>5},
  class:    Expert,
  embedded: false>

Вопрос: Как загрузить коллекцию в рамках этого критерия?Когда я делаю .to_a, он говорит:
Cannot serialize an object of class Category into BSON

Сама категория является действительной BSON obj при непосредственном получении, но в области видимости не может отобразить ссылку на объект.

Спасибозаранее!

1 Ответ

3 голосов
/ 05 апреля 2011

Это работает для меня (Mongoid 2.0):

:where => {:category_id => category.id, :state => 'available'}
...