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
這樣的綁定變量設置。什麼是解決方法?例如如果我想限制記錄的數量到用戶指定的限制。