所以我只是用pg_search做一个简单的东西搜索。搜索工作正常,我刚收到一些弃用警告。
抓取模型:
pg_search_scope :search, against: [:title, :description, :source],
using: {
:tsearch => {:prefix => true, dictionary: "english"}
}
搜索控制器:
def index
if params[:query].present?
@results = Scrape.search(params[:query])
end
end
然后我收到弃用警告:
DEPRECATION警告:危险的查询方法(其参数的方法 用作原始SQL),并使用非属性参数调用: “ pg_search_729e2f4a73e4e536b97693.rank DESC,\”抓取\“。\” id \“ ASC”。 在Rails 6.0中将禁止使用非属性参数。这个方法 不应使用用户提供的值(例如请求)来调用 参数或模型属性。已知安全值可以通过 将它们包装在Arel.sql()中。 (从索引处调用 /home/doom/Desktop/Rails/test/app/controllers/search_controller.rb:10)
我假设我真的不想使用Arel.sql(),因为它是来自用户的输入。那么有什么想法我应该如何构造呢?