ActiveRecord::Base.connection.execute(
"WITH numberofdays AS
(SELECT percent_change FROM asset_histories
WHERE date < $1
AND asset_symbol = $2
ORDER BY date DESC
LIMIT $3)
SELECT stddev_samp(percent_change) as stdev FROM numberofdays",
[day,symbol,daystolimit])
ここで、day、symbol、daystolimitは、上記のコードの前に割り当てられた変数です。それらはそのように割り当てられます:
day = '2013-03-25'
symbol = 'AAPL'
daystolimit = 20
#{variable}
悪意のある可能性があるため、使用したくありません。タイトルで参照されているように、私のステートメントは戻ってきます
PGError ERROR: there is no parameter $1 LINE 1 ... WHERE date <$1 AND...
Postgresql9.2とrails3.2の使用
私がここで見つけた代替ソリューションを追加して編集します:
muがconnection.method(:quote)を使用する場所では短すぎることに加えて、ドキュメントが見つからなかったため、引用がそのように行われた別の投稿に出くわしました。
a = ActiveRecord::Base.connection
a.execute(%Q{SELECT * FROM table WHERE id = #{a.quote(variable)}...})