【发布时间】:2012-03-07 05:12:17
【问题描述】:
我有一个复杂的 SQL 查询,涉及 3 个模型,根据时间操作创建虚拟属性...理想情况下,我想使用 ActiveRecord 等方法来生成它,这样它会更好,但我不知道怎么做。
find_by_sql <<--sql
SELECT username, count(*) as records, AVG(time_taken) as time_taken
FROM (
SELECT TIMESTAMPDIFF(HOUR, posts.created_at, reports.created_at) as time_taken,
users.username as username
FROM reports, users, posts
WHERE reports.user_id = users.id AND
reports.post_id = posts.id
) AS dashboard_data # this name is unused, but apparently required
GROUP BY username
sql
有没有办法在 ActiveRecord 中做这样的事情?还是原始 sql 是做这种复杂事情的唯一方法?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 activerecord