
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.88] |
![]() |
|
![]() |
Сообщ.
#1
,
|
|
Помогите пожалуйста со запросом в Rails (в частности, версии 2.3)
Возьмём, скажем, на классической паре Post - Comment: показать все посты, у которых есть как минимум один комментарий за предыдущий месяц. Post (..., :body, :created_at, :updated_at) has_many :comments Comment (..., :body, :created_at, :updated_at) belongs_to :post Вот результаты моих потуг: ![]() ![]() Post.all( :joins => :comments, :group => "comments.created_at", :having => "COUNT(comments.created_at) > 0", :conditions => "comments.created_at > DATE_SUB(NOW(), INTERVAL 1 MONTH)" ) - выдаёт неверный результат. Как-то не подружился с having . Не обижусь, если дадите пример на чистом SQL. Добавлено Похоже, что ошибся. Всё верно, только выводит повторяющиеся посты тоже. |
Сообщ.
#2
,
|
|
|
А так будет не проще - Post.all(:joins => :comments, :conditions => {:comments => ['created_at > DATE_SUB(NOW(), INTERVAL 1 MONTH)']}) ?
Банально джоиним с таблицей комментов и накладываем условие, что дата коммента - меньше месяца назад. Даже так: Post.all(:joins => :comments, :conditions => {:comments => ['created_at > ?', Date.today - 1.month]}) За синтаксис не ручаюсь. |