LoginSignup
12
11

More than 5 years have passed since last update.

railsアプリで数字と文字を同時に検索する方法

Posted at

利用例

idか名前に「3」を含む利用者を検索したい場合

実現方法

ransackを利用した場合を記述します

Gemfile
  gem 'ransack'
app/views/users/index.html.erb
<%= search_form_for @q, url: users_path do |f| %>
  <%= f.text_field :search_word %>
  <%= f.submit 'Search' %>
<% end %>
app/controllers/users_controller.rb
def index
  params[:search_word]
  @q = User.ransack({ id_or_name_cont: params[:search_word] })
  @users = @q.result(distinct: true)
end
app/models/user.rb
private
ransacker :id do
  Arel::Nodes::SqlLiteral.new("CONVERT(#{table_name}.id, CHAR(8))")
end

注意点

ransackerはmodelに記述します。
このようransackerを記述することで、文字列に変換されたidが検索に使われます。

以上です。
誰かのお役に立てれば幸いです。
間違いなどがありましたら指摘していただけると嬉しいです。

参考

https://github.com/activerecord-hackery/ransack/issues/85
https://github.com/activerecord-hackery/ransack

12
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11