リモートで働くプログラマーの検索結果

リモ太がググったことの覚書

ActiveRecordで値が入力されていないものだけを抽出したい

データベースがnullを許可しているかどうかによって変わってくるけど デフォルトだとnullが許可されているので値が入力されていないものを抽出する場合には null空文字列 両方を抽出対象とする必要がある

create_table "messages", force: :cascade do |t|
  t.bigint "user_id"
  t.text "content"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.index ["user_id"], name: "index_messages_on_user_id"
end

上記のようなデータ構造のモデルからcontentが入力されていないものだけを抽出するには次のようにする必要がある

Message.where(content: [nil, ''])

これで実行されるSQL

SELECT "messages".* FROM "messages" WHERE ("messages"."content" = $1 OR "messages"."content" IS NULL)