我有条件根据某些搜索关键字过滤/搜索 帖子的标题和用户。
如您所见,这些值可用于以下两种类型的条件:
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
,第二个是使用?
符号。第一个对我来说很容易,如果有很多变量需要比较,因为我可以声明一次变量并多次使用它。
任何人都可以告诉我,使用第一个或两者都有相同的劣势或安全问题吗?
谢谢: - )
答案 0 :(得分:2)
这两种方式似乎都适合我。
有关详细信息,请查看此rails官方安全指南。 http://guides.rubyonrails.org/security.html#sql-injection