在ActiveRecord中使用变量where条件

时间:2016-11-02 06:12:19

标签: ruby-on-rails security ruby-on-rails-4 activerecord

我有条件根据某些搜索关键字过滤/搜索 帖子标题和用户

如您所见,这些值可用于以下两种类型的条件:

Post.where('title ILIKE :keyword or user_name ILIKE :keyword', keyword: "%#{params[:search_keyword]}%")

Post.where('title ILIKE ? or user_name ILIKE ?', "%#{params[:search_keyword]}%", "#{%params[:search_keyword]}%")

第一个是直接在条件内使用variable,第二个是使用?符号。第一个对我来说很容易,如果有很多变量需要比较,因为我可以声明一次变量并多次使用它。

任何人都可以告诉我,使用第一个或两者都有相同的劣势安全问题吗?

谢谢: - )

1 个答案:

答案 0 :(得分:2)

这两种方式似乎都适合我。

有关详细信息,请查看此rails官方安全指南。 http://guides.rubyonrails.org/security.html#sql-injection