Rails5でransackのパラメータを調べてみた

今更ですが、ransackを試したので、覚書として残します。

環境:
rails 5.1.6
ruby 2.3.1

概要:
scaffoldでblogsテーブル(カラムはtitle、contentのみ)を作成。
contentの文字列に対し、あいまい検索をしてみる。

blogs_controller.rb

class BlogsController < ApplicationController

  def index
    @search = Blog.ransack(params[:q])
    @blogs = @search.result
  end

// 以下省略



blogs/index.html.erb

// 省略

<%= search_form_for @search do |f| %>
  <%= f.label :content_cont %>
  <%= f.search_field :content_cont %>
  <div class="actions"><%= f.submit "検索" %></div>
<% end %>

// 省略

これで/blogsにアクセスするとこんな感じになる f:id:shounen070505:20180509154837p:plain

つづいて、検索欄に「はじ」と入れて検索をポチッとする。 f:id:shounen070505:20180509155048p:plain

すると、SQLではこんな命令が飛ぶ。 f:id:shounen070505:20180509155703p:plain

ちなみにパラメータはこんな感じ。 f:id:shounen070505:20180509155907p:plain

検索の結果も正しく表示できました。 f:id:shounen070505:20180509161342p:plain

content_eqにすると、完全一致となります。

blogs/index.html.erb

// 省略

<%= search_form_for @search do |f| %>
  <%= f.label :content_eq %>
  <%= f.search_field :content_eq %>
  <div class="actions"><%= f.submit "検索" %></div>
<% end %>

// 省略