mongoid
今回の問題 フラグを検索条件に含めていて、値がセットされていればfalse/trueに関わらず、検索条件に含めたいときに present? で判定してしまうと false が検索フラグに設定されていた場合に値がセットされているにも関わらず if文で false と判定されてし…
はじめに mongoidでのindexの貼り方のアレコレをまとめてくれている記事がないので自分のためにまとめます。 通常のindex 自身のフィールドに対するindex ※ background: true は更新時のロックが掛からないようにするオプション index({特定のフィールド: 1,…
:delete モデルのコールバックを実行せずに子ドキュメントを削除する。 :destroy 子ドキュメントを破棄し、モデルコールバックを実行します。 :nullify 子ドキュメントの外部キーをnilで更新して子ドキュメントを孤立させる。 :restrict 子ドキュメントが存…
経緯 久々にActiveRecordを業務でいじることになり、あいまい検索の方法を忘れてたのでメモ。 ちなみにmongoidだとこんな感じで正規表現的に書ける。 Model.where(name: /hoge/).to_a 書き方 mongoidに慣れすぎててパッと分かんなかった... key = "Supreme" …
経緯 普段の業務でmongoidというActiveRecordとは異なるORM(正確にはODM)を使っています。 当たり前ですが、ActiveRecordを使用しないRailsアプリではActiveRecordの使用を前提としたRailsの機能を使用することが出来ません。 というわけで、ActiveRecord::E…
やり方 公式ドキュメントによるとこんな感じの書き方でフィールドの値の変更をコンソールで確認出来るみたいです。 user.name = "hoge" => "hoge" user.changed_attributes => {"name"=>"hoge"} saveされると消えるっぽい。 user.save user.changed_attribut…
基本構文 そういえばmongoidでOR条件どうやるんだっけ? そんな私の今日のメモ Model.any_of({フィールド: 条件}, {フィールド: 条件}) 使用例 良い例が思い付かなかった... # クーポンが適用されていない or クーポンの期限が切れていない Coupon.any_of({a…
mongoidに纏わる誰の役にも立たない内容 本番でコンソールに入ってスクリプトを打つときについ忘れがちですが、 データ更新を行わないスクリプトを実行する場合はslaveを見るように指定するのが肝要です。 slaveを見るために必要なコード ※ 以下の例では mon…
前提 BlogモデルとUserモデルがある BlogはUserにbelogs_toの関係 Blogのデータに対してUserが存在するデータだけを検索したい場合 落とし穴 mongoidの Blog.where(user: { '$exists' => true } は フィールドが存在したら無条件で値を取ってきてしまうので…
概要 先日のブログで書いた内容の経過報告です。 fuqda.hatenablog.com PR送った結果 先日mongoidに送ったプルリクエストが無事にマージされました。 github.com 所感 今回マージされたリポジトリには明確なコントリビューションガイドは無かったのですが、…
gemのバージョン mongoid 6.1.1 MongoDBのバージョン Docker使用 mongo:3.6.12 概要 一対多のモデルに対する update_all が正しく動いてなさそう... 雑な例 (実際のコードとは関係ありません) Orderモデルにpending(入金待ち)、complete(決済完了)とcancel(…
概要 mongoidには特定のインスタンスのtimestampを更新したくない時に、timestampだけ更新しないようにする仕組みがあります。 私は実務でActive Recordを使ったことがないので定かではないですが、Active Recordにも必ずあるはずです。 そのオプションを付…
今回やったこと RailsからMongoDBを使うためのOD(Object Document)マッパーであるmongoidにプルリクエストを送りました。 github.com 概要 mongoidを使った時にrails g modelコマンドでデフォルトで生成されるファイルにはtimestampがincludeされないので、…
問題 Railsでmongoidを使用した場合、デフォルトのままだと当たり前にあると思いがちな created_at と updated_at が存在しないモデルが生まれます。 今回はこれの追加方法について触れてみます。 解決法 モデルのファイルに include Mongoid::Timestamps を…
経緯 現場Railsのタスク管理アプリをDocker環境+mongoidで作っていて、タスクの保存画面を作成していたところ、タスクのcreateでエラーに遭遇しました。 発生したエラー Docker環境上でRailsのDB(MongoDB)に接続出来てなさそう... 発生環境 Docker for Mac …
前提 こちらの記事はDockerに対して不慣れな人間が書いているので、そらそうやろ!という内容が含まれます。 それでも個人用メモとして放流します。 技術要素 Rails 5.2.2.1 Ruby 2.5.1 mongodb 4.0.6 Dockerを扱うディレクトリ構成 アプリディレクトリ/ Gem…
はじめに find_or_initialize_by メソッドを知らなかった自分用メモに投稿させて頂きます。 なお、mongoidのコンソールログは量が多いので割愛し、ActiveRecordの例の時だけコンソールの表示を記載してあります。 find_or_initialize_byとは? 存在したらそ…
概要 RailsでMongoDB用のORMとして mongoid というgemがあります。 ここではそれを使った場合のモデルのバリデーションについてまとめてみます。 注意 RDBで言うカラムのことをMongoDBではフィールドと呼びます。 後述するフィールドは頭の中でカラムと変換…
はじめに 本記事は、mongoidでこういう検索条件で検索をしたいのだけど、どうやったらいいのか?という 痒いところに手が届くように、その他のmongoidの記事では触れていない部分に触れていきます。 サンプルが最初は少ないですが、順次更新していく予定です…