active record で JSON_CONTAINS で where を実行したい
create table posts (
id integer,
tags json
);
上記のようなテーブルがあり、 tags には タグ(文字列) の配列が json として入っているとします。
mysql> select * from posts;
+------+-----------------+
| id | tags |
+------+-----------------+
| 1 | ["c++", "java"] |
| 2 | ["ruby"] |
| 3 | ["c++"] |
+------+-----------------+
たとえば、 c++ が入っている Post を取得するには、 sql においては、
select * from posts where JSON_CONTAINS(tags, '"c++"', '$');
を実行すればよいですが、これを active record 上からどうやったら実行できるのか、と思っています。
質問
上記テーブルに対して、 Post モデルを次のように定義したとします。
class Post < ApplicationRecord
end
Post から、 c++ のタグが含まれる Relation を作成するにはどうしたらよいでしょうか?