Ну, это код, который наконец-то сработал для меня .. (Франсуа .. в результате в sql stmt пропало ключевое слово join)
def Expense.get_top_n_categories options={}
#sQuery = "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";
#sQuery += " limit #{options[:limit].to_i}" if !options[:limit].nil?
#Expense.find_by_sql(sQuery)
query_options = {:select => "categories.name name, sum(amount) total_amount",
:joins => "inner join categories on category_id = categories.id",
:group => "category_id",
:order => "total_amount desc"}
query_options[:limit] = options[:limit].to_i if !options[:limit].nil?
Expense.find(:all, query_options)
end
find_by_sql имеет переменную связывания rails ... Я не знаю, как я это пропустил.
Наконец, является ли указанное выше использование пользовательской потенциальной точки входа для sql-инъекции или вызов метода to_i предотвращает это?
Спасибо за помощь. Я благодарен.