Написать запрос postgres через интерфейс запросов Active Record

У меня есть следующий запрос, который я запускаю в Postgres:

SELECT count(id), to_char(current_sign_in_at, 'yyyy-MM-dd') AS sign_in_date
From users
WHERE current_sign_in_at > date '2014-02-16'
GROUP by sign_in_date;

Когда я запускаю этот запрос через ActiveRecord::Base.connection.execute, я получаю:

[{"count"=>"3", "sign_in_date"=>"2015-02-17"}, {"count"=>"1", "sign_in_date"=>"2014-10-26"}, {"count"=>"1", "sign_in_date"=>"2014-10-18"}]

Однако у меня возникли проблемы с тем, чтобы запрос работал с использованием интерфейса запроса активной записи.


person octant    schedule 18.02.2015    source источник


Ответы (1)


Вот путь Rails:

@users = User.group(:sign_in_date)
             .where("current_sign_in_at > date (?)", '2014-02-16')
             .select("count(id) AS count, to_char(current_sign_in_at, 'yyyy-MM-dd') AS sign_in_date")

Теперь повторите @users, чтобы получить результат, который вы получили, запустив direct sql, как вы упомянули в вопросе.

@users.map { |user| {"count"=> user.count, "sign_in_date"=> user.sign_in_date} }
person Arup Rakshit    schedule 18.02.2015