mysql> desc categories;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(80) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
mysql> desc expenses;
+-------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| created_at | datetime | NO | | NULL | |
| description | varchar(100) | NO | | NULL | |
| amount | decimal(10,2) | NO | | NULL | |
| category_id | int(11) | NO | MUL | 1 | |
+-------------+---------------+------+-----+---------+----------------+
现在我需要的前N类这样的...将DB-ISH查询转换为Rails ActiveRecord模型术语是否有意义?
Expense.find_by_sql("SELECT categories.name, sum(amount) as total_amount
from expenses
join categories on category_id = categories.id
group by category_id
order by total_amount desc")
但是,这在我的Rails的良心唠叨..它似乎有可能实现通过Expense.find同样的事情并提供选项,如:组,:连接..
- 有人可以将此查询转换成ActiveRecord模型说话吗?
- 这是值得的...我个人觉得SQL更具可读性,让我的工作更快完成..也许因为我仍然在学习Rails。没有在源代码中嵌入SQL的任何优势(除了不能改变DB厂商的SQL风格等)?
- 似乎
find_by_sql
没有像find
这样的绑定变量设置。什么是解决方法?例如如果我想限制记录的数量到用户指定的限制。