私は検索可能なモデルの属性を表す属性の束を持つオブジェクトを持って、私は動的に設定されている属性のみを使用してSQLクエリを作成したいと思います。以下の方法を作成しましたが、SQLインジェクション攻撃の影響を受けやすいと思います。私はいくつかの調査を行い、レール上のアクティブレコードクエリーインターフェイスガイドを読んでいましたが、where条件は常に静的に定義された文字列を最初のパラメータとして必要とするようです。私はまた、私のメソッドで生成されたSQL文字列をサニタイズする方法を見つけようとしましたが、それを行うには良い方法があるようには思えません。rails dynamicここではsqlクエリ
どうすればよいですか?私はどこの条件を使用するか、ちょうど何とかこのSQL文字列をサニタイズする必要がありますか?ありがとう。
def query_string
to_return = ""
self.instance_values.symbolize_keys.each do |attr_name, attr_value|
if defined?(attr_value) and !attr_value.blank?
to_return << "#{attr_name} LIKE '%#{attr_value}%' and "
end
end
to_return.chomp(" and ")
end
うわー、私はあなたのRubyのスキルに驚いています。 2番目の例は、心臓発破です。ありがとう! –