Активная загрузка ассоциаций с использованием MongoMapper

Я ищу связанные документы с нетерпеливой загрузкой с помощью MongoMapper. Скажем, у меня есть автор с условием: has_one для сообщения, я должен иметь возможность загрузить автора с помощью одного запроса

Post.find(:all, :include => :author)

Какие-либо предложения?


person Greg    schedule 03.09.2010    source источник
comment
По той же теме было бы здорово, если бы у меня было то же самое для массива встроенных объектов, которые, в свою очередь, имеют ассоциации. Пример: question = Question.first; question.comments(:include => :user) (где комментарии - это встроенная модель).   -  person agentofuser    schedule 22.10.2010


Ответы (1)


ОБНОВЛЕНИЕ: приведенный ниже код похож на рабочий процесс модели. Я попробовал его после некоторого кодирования, и он не сработал!

Допустим, у вас есть модель публикации и модель пользователя.

Пользователь has_many сообщений, и вы хотите, чтобы все пользователи (авторы) со своими сообщениями.

Вот совет, как с этим справиться. и мой пример - получение одного сообщения.

post.rb

class Post
  include MongoMapper::Document

  key :title, String
  key :body, String
  key :user_id, ObjectId

  belongs_to :user

end

и user.rb

class User
  include MongoMapper::Document
  key :name
  many :posts, :embed => :title
end

Теперь,

u = User.first
p = u.posts.first

puts p.title # read it from embedded doc
puts p.body # lazy loading

Хитрость здесь в том, чтобы встроить наиболее распространенные поля, такие как имя пользователя, _id, имя пользователя и т. Д.

Я не тестировал то, что указано выше, но вы должны попробовать!

Лучший - Амр

person amrnt    schedule 23.10.2010
comment
Хотелось бы, чтобы был более простой способ, но я возьму то, что смогу получить - person Greg; 26.10.2010
comment
Я попробовал по-настоящему! (после исправления и добавления некоторых кодов) Но, к сожалению, это не сработало. Я думаю, что в Mongoid есть шанс, см. Этот запрос на перенос: github.com/mongoid/mongoid/pull / 391 - person amrnt; 26.10.2010