メモ(Memo)一覧には id, name, urlが表示されており、
そのurlを検索する画面を作っております。

|ID|メモ名|URL|
|---|-------|-----|
| 1| AAA| http://google.com |
| 2| BBB| http://yahoo.co.jp |
| 3| CCC| http://facebook.com |

urlを検索する際 毎回の検索文字列入力を簡略化するため、
検索グループ(SearchGroup)とそれに紐付いた検索グループURL(SearchGroupUrl)を定義してあります。

class Memo < ActiveRecord::Base
# name, string
# url, string
end

class SearchGroup < ActiveRecord::Base
  has_many :search_group_urls, inverse_of: :search_group, :dependent => :destroy
  accepts_nested_attributes_for :search_group_urls, :allow_destroy => true, :reject_if => :all_blank

# name, string
end

class SearchGroupUrl < ActiveRecord::Base
  belongs_to :search_group, inverse_of: :search_group_urls

# search_group_id, refference
# url, string
end

データ中身

$ SearchGroup.all
-> #<ActiveRecord::Relation [#<SearchGroup id: 1, name: "GoogleとYahoo">]

$ SearchGroupUrl.all
-> #<ActiveRecord::Relation [#<SearchGroupUrl id: 1, search_group_id: 1, url: "google">, #<SearchGroupUrl id: 2, search_group_id: 1, url: "yahoo">]

View

<%= form_tag (search_***_path) method: :get do %>
  ~~~ 検索部分 ~~~
  <div>
    <%= select_tag "search[search_group]", options_for_select(get_search_group), :class => "form-control input-sm" %>
  </div
  ~~~ 表示部分 ~~~
<% end %>

Helper

def get_search_group
  search_group_hash = {"全て" => ""}
  return search_group_hash if SearchGroup.all.blank?
  results = SearchGroup.all.map{|search_group| [search_group.name,   search_group.search_group_urls.map{|url| [url.url]}]}
  Hash[results]
end

ここで問題なのは、Controllerでこのget_search_groupメソッドから取得した型がString型であるためうまく Where inの形で検索できないことです。

Controller

query = Memo.readonly
query = query.where(arel_table[:url].matches(search_params[:search_group]))

中身

$ search_params[:search_group]
=> "[[\"google\"], [\"yahoo\"]]"

$ search_params[:search_group].class
=> String

複数文字列を効率よく検索するクエリの組み立て方を知りたいです。
(予期する結果は 'google' と 'yahoo'が含まれるレコード2件が結果表示されることです)