Postgresデータベースを搭載した私のRails 5アプリケーションでは、jsonbという名前のPostという名前のPostというコメントがあります。コメントのデフォルト値は{}です。
のは、これがあなたのテーブルであるとしましょう:
CREATE TABLE Posts
(
post_id SERIAL PRIMARY KEY,
comments jsonb DEFAULT '{}' /* or json instead of jsonb */
) ;
...いくつかのサンプルデータ
INSERT INTO Posts
(comments)
VALUES
('{"something": "a comment"}'),
('[{"something": "a comment"}, {"something":"another comment"}]'),
(DEFAULT),
('{}'),
(DEFAULT),
(NULL) ;
...それは次のようになります。
SELECT * FROM Posts;
post_id | comments
------: | :-------------------------------------------------------------
1 | {"something": "a comment"}
2 | [{"something": "a comment"}, {"something": "another comment"}]
3 | {}
4 | {}
5 | {}
6 | null
コメントの既定値を持つ投稿の数を返したいと思います。
これは{}
で(平等)comments
列を比較するのと同じくらい簡単です:
SELECT
count(*)
FROM
posts
WHERE
comments = '{}' /* or '{}'::jsonb */
| count |
| ----: |
| 3 |
dbfiddle here
私が持っている私の推測(試していない)は、これをレールに変換することです:
Post.where("comments = ?", {}.to_json).count