Если ваши ассоциации настроены правильно, вы должны быть в состоянии сделать:
@topic.answers
Это звучит как выше, то, что вы ищете. Убедитесь, что вы правильно настроили свои ассоциации. Mongoid очень прощает при определении ассоциаций, поэтому может показаться, что они настроены правильно, когда на самом деле существует проблема, такая как несоответствующие имена в references_many
и referenced_in
.
Если есть хорошая причина, почему выше не работает, и вы должны использовать запрос, вы можете использовать этот простой запрос:
@answers = Answer.where(:topic_ids => @topic.id)
Это будет соответствовать любой Answer
записи которого topic_ids включает прилагающийся ID , Синтаксис одинаковый для полей массива, как для полей с одним значением, например Answer.where(:title => 'Foo')
. MongoDB будет интерпретировать запрос по-разному в зависимости от того, является ли поле массивом (проверьте, включено ли значение в массив) или одно значение (проверьте, соответствует ли поставленное значение).
Вот немного больше информации о том, как MongoDB обрабатывает запросы массива: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-ValueinanArray
хммм, пример вы дали, кажется, не работает - я делаю что-то неправильно? @answers = @ user.answers.where (: topic_ids.in => @ topic.id) – 2010-12-05 05:56:02