2017-12-20 5 views
0

を注文します私はそれを試してみましたリファクタリング:レールが、私は順序が安全ではないので、私はこのコードをリファクタリングしたいことを知っているパラメータ化クエリ

.order("? ?", sort_column, sort_direction).page(page_params) 

が、私はエラーに

ActiveRecord::StatementInvalid - PG::SyntaxError: ERROR: syntax error at or near "," 
LINE 1: ...HERE (application_statuses.id = 137) ORDER BY ? ?, user_app... 
を取得しています

私は

Thing.where("state = ?" ,params[:state]) 

ようなステートメントは、私は省略していますいくつかの特別な構文がある場合で前にこの種のものをやっていますか?

編集:私は最も心配だ事は誰か、有害な何かをここにSQLを注入して行うことができることである

@spickermannは、データをサニタイズしないために言及したように

Thing.order("name; drop table users;") 

を実行すると、usersテーブルが破棄されます。

+0

'order'では動作しないことがあります。 –

答えて

2

order属性がリストに含まれている場合、属性はサニタイズされません(whereなど)。

しかし、であるが、このようなハッシュとして受け入れ:

order(sort_column => sort_direction) 

Rails Guides About Orderingを参照してください。

関連する問題