2010-02-10 2 views
3

Первый вопрос SO после использования этого места для справки по многим другим вещам .. Я нервничаю.Datamapper (ruby) - (Использование примера блога) Получение сообщений, не имеющих комментариев

DataMapper .. Использование блога модель для примера (сообщения, комментарии и т.д. - http://datamapper.org/docs/associations.html) Я пытаюсь тренировки, как получить посты блога, которые не имеют каких-либо комментариев ..

Так что-то подобное сообщение. все (: комментарии => {: комментарий => ноль})

Лот много удачи :(

я прочитал здесь, что для сложных запросов отчетности, лучше упасть до SQL, но, конечно, есть способ этого не существует?

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

+0

Трудно ответить, не зная, как выглядит ваша структура таблицы. – Zepplock

+0

Учитывая, что блог - это веб-приложение, было бы не по порядку спросить, действительно ли это вопрос Rails? (Если это так, добавление тега «ruby-on-rails» может быть идеей.) – Shadowfirebird

+0

Не приложение для рельсов, а просто некоторые возились в Синатре. Что касается структуры таблицы, всего 2 таблицы, сообщения и комментарии, сообщения могут иметь много комментариев. Нужны сообщения, которые еще не имеют комментариев ... – discoml

ответ

3

Если у вас нет кеша-счетчика в вашей модели Post (например, «comments_count»), это будет медленным. Но вот это все равно:

Post.find(:all, :include => :comments).select { |post| post.comments.empty? } 

Я предлагаю идти с решением кэш-счетчик (но включает в себя некоторые схемы рефакторинга и обновление счетчиков во время миграции один раз):

Post.all(:conditions => { :comments_count => 0 }) 

Последнее время много более эффективный, особенно в Rails 3 (причина ленивого запроса).

+0

Также, если вы ищете только сообщения с комментариями, вы можете использовать: 'Post.find (: all,: include =>: comments) .select {| post | post.comments.any?} ' – Nilloc