如何使用“?” MySQL select 中的符号 Ruby 在 Rails 上?

How to use the '?' symbol in a MySQL select in Ruby On Rails?

我需要在我的 Rails 4.2 应用程序中获得 MySQL 全文搜索的针对性。所以我需要在 select 子句中使用别名(相关性)。

问题是使用'?'符号在 where 子句中,但在 select:

Model.select("articles.*, MATCH (name) AGAINST (? IN BOOLEAN MODE) AS pertinence", @search).where(...).order("pertinence DESC")

如果我这样做:

Model.select('articles.*, MATCH (name) AGAINST ("' + @search + '" IN BOOLEAN MODE) AS pertinence').where(...).order("pertinence DESC")

我在@search(未清理)和 SQL 注入中可能遇到引号问题。

那么如何使用 Active Record 执行此类查询?

谢谢

您可以手动清理搜索参数。

search_param = ActiveRecord::Base::sanitize(@search)

Model.select("articles.*, MATCH (name) AGAINST (#{search_param} IN BOOLEAN MODE) AS pertinence").where(...).order("pertinence DESC")