Как я могу запросить все записи после определенной даты? - PullRequest
0 голосов
/ 12 августа 2011

Работает в своем текущем состоянии, но чувствует себя небрежно.

t = Time.local(2011, 8, 11)
comments_count = Comment.count(:conditions => ["comments.user_id = (?) AND comments.created_at > (?)" , record.user_id, t])

Кто-нибудь может предложить другой способ написать этот запрос? Мне нужно вернуть количество всех комментариев, созданных после 08/11/2011.

РЕДАКТИРОВАТЬ: Rails 2.3.9

Ответы [ 2 ]

0 голосов
/ 12 августа 2011

Вы можете очистить код с помощью named_scopes:

class Comment
  named_scope :for_user, lambda { |user_id|
    :conditions => ["comments.user_id = (?)", user_id]
  }
  named_scope :created_after, lambda { |time|
    :conditions => ["comments.created_at > (?)", time]
  }

  # ... rest of class ...
end

, и тогда ваш запрос будет:

t = Time.local(2011, 8, 11)
comments_count = Comment.for_user(record.user_id).created_after(t).count()
0 голосов
/ 12 августа 2011

Вы всегда можете написать для него именованную область:

named_scope :created_after, lambda {|time| { :conditions => ['created_at > ?', time] } }
named_scope :by_user, lambda {|user| { :conditions => ['user_id = ?', user.to_param] } }

затем:

Comment.created_after(some_time).by_user(some_user)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...