MongoidでのRecordNotFound例外の上げ方: Mongoid::Errors::DocumentNotFound.new(class, ids) Mongoidを使用してActiveRecordの raise ActiveRecord::RecordNotFound に相当する処理を行う方法をまとめます。 Mongoidを使用し、モデルのインスタンスをid以外の属性で検索した時に、該当するレコードが見つからない場合は nil が返ります。 ActiveRecordでモデルをid以外の属性で検索した場合にレコードが1件も見つからなかった場合に nil が返るのと同じ挙動です。 こうした場合に、nilをそのまま受け取るのではなく、レコードが見つからなかった旨の例外を上げ、別途処理したいことがあります。 ActiveRecordの場合は、 # ActiveRecordの場合 @u
Auto Increment with MongoDBより、Mongoid/MongoDBでMySQLのauto incrementみたいなことをする方法。 連番を保持するためのCollectionを用意して、新しくDocumentを作る際にそれをfind_and_modifyで1増加させるという方法をとる。 find_and_modifyを使うので、MongoDBは1.3.0以上、Mongoidは2.2.0以上が必要になる。 まずは連番を保持するためのCollectionを用意する。 class Seq include Mongoid::Document field :collection, type: String field :seq, type: Integer end auto increment的なことがしたいCollectionではbefore_validateのタイミングで
第5回 MongoDB.jp 勉強会 in Tokyoに行ってきた! メモとかはまたのちほどアップするとして(そういえばRubyKaigi最終日のメモもアップできていない)、@yuki24 さんの発表で「ActiveRecordとMongoidは共存」できるという話を聞いて、ちょっと試してみた。 その過程で適当に作ったコードをgithubに上げておく。Todoを作成・更新した際にその内容をTodoLogに吐き出すというモノ。 mongoidのインストール これは普通に。 $ gem install bson_ext mongoid $ rails g mongoid:config Mongoidのモデルの作成 mongoidをインストールするとmodelジェネレータがmongoidのモデルファイルを生成してくれる。 $ rails g model todo_log title:string
Mongoid にはアプリケーションで使える、いくつかの役に立つ機能があります。 マスター/スレイブ サポート mongoid.yml でスレイブデータベースを設定しているなら、スレイブを有効化した読み取りクエリを、ラウンドロビンでスレイブデータベースを参照します。また、クエリ単位でも制御することができます。 モデルの全ての読み取りを、スレイブ間でラウンドロビンします: class Person include Mongoid::Document enslave end enslave Criteria を使って、クエリ単位で、スレイブから読み取ります: Person.where(:first_name => "Durran").enslave キャッシュ Mongoid は、何も設定していないそのままの状態で、大きなクエリとデータセットでメモリが効率的に使われるように、MongoDB の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く