LoginSignup
1
4

More than 5 years have passed since last update.

acts-as-taggable-onの大文字、小文字検索について

Posted at

acts-as-taggable-onでのタグ処理について

acts-as-taggable-on
でのタグ付けで、大文字でタグを付けた時に、検索で表示されなかった。
その時の解決方法。

どのような症状か

例えばAというコンテンツに IMPORTANT というタグを付けたとする。
IMPORTANTと付けられたタグ一覧のコンテンツを取得するため

contents = Content.tagged_with("IMPORTANT")

と記述したが、 どうしても結果がnilになってしまう。

原因

発行されているSQLをよくみると

(SELECT `tags`.`id` FROM `tags` WHERE `tags`.`name` LIKE 'important' ESCAPE '!')

LIKE 検索が小文字になっていて、なおかつMySQLのBINARYがONになっているので、大文字、小文字を区別してしまうらしい。

修正

acts-as-taggable-onを見ていると

If you would like tags to be case-sensitive and not use LIKE queries for creation:

ActsAsTaggableOn.strict_case_match = true

→タグで大文字、小文字を区別するにはtrueにしてねとの事。

なので、初期設定を変えました。

vim config/initializers/acts_as_taggable_on.rb

acts_as_taggable_on.rb
ActsAsTaggableOn.strict_case_match = true

これで再起動すると、ちゃんと大文字小文字を区別して検索されました。

1
4
0

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
1
4