Небольшая ремарка - я так предполагаю, что у вас этот код в контроллере. Такие вещи лучше выносить в модели используя scope и лямбды. В вашем случае это будет
class Post < ActiveRecord::Base
scope :recent, -> (start_date, end_date) { joins(:comments).where('comments.start_date =>?', 'comments.finish_date <=?', start_date, finish_date)}
# можно также добавить скоуп для поиска по юзер айди
scope :by_user, -> (user_id) {where (user_id: user_id)}
# теперь можно слинковать эти скоупы в отдельном методе
class << self
def by_user_and_date(user, start, finish)
by_user(user).recent(start, finish)
end
end
В контроллере вызываем
@recent_by_user = Post.by_user_and_date(10, Date.today, Date.yesterday)