サーチ…


インストール

まず、あなたのGemfile Mongoidを追加してください:

gem "mongoid", "~> 4.0.0"

bundle installます。または単に実行する:

$ gem install mongoid

インストール後、ジェネレータを実行して設定ファイルを作成します:

$ rails g mongoid:config

ファイル(myapp)/config/mongoid.ymlを作成します。

モデルの作成

以下を実行してモデルを作成します( Userと呼ぶことができます)。

$ rails g model User

app/models/user.rbというファイルが生成されます:

class User
  include Mongoid::Document

end

これはあなたがモデルを持つために必要なものです( idフィールドだけですが)。 ActiveRecordとは異なり、移行ファイルはありません。モデルのすべてのデータベース情報は、モデルファイルに含まれています。

タイムスタンプは、生成時にモデルに自動的に含まれません。 created_atupdated_atをモデルに追加するには、

include Mongoid::Timestamps

下のモデルにinclude Mongoid::Documentがあります。

class User
  include Mongoid::Document
  include Mongoid::Timestamps

end

フィールド

Mongoidドキュメンテーションよれば 、16の有効なフィールドタイプがあります:

  • アレイ
  • BigDecimal
  • ブール
  • 日付
  • 日付時刻
  • 浮く
  • ハッシュ
  • 整数
  • BSON :: ObjectId
  • BSON ::バイナリ
  • 範囲
  • 正規表現
  • 文字列
  • シンボル
  • 時間
  • TimeWithZone

フィールドを追加するには( nameを付けてStringします)、これをモデルファイルに追加します。

field :name, type: String

デフォルト値を設定するには、 defaultオプションを渡します:

field :name, type: String, default: ""

クラシック協会

Mongoidは古典的なActiveRecord関連付けを可能にします:

  • 1対1: has_one / belongs_to
  • 1対多: has_many / belongs_to
  • 多対多: has_and_belongs_to_many

アソシエーションを追加するには(User has_many postsとします)、これをUserモデルファイルに追加します:

has_many :posts

これをPostモデルファイルに追加します:

belongs_to :user

これにより、 Postモデルのuser_idフィールドが追加され、 Postクラスにuserメソッドが追加され、 Userクラスにpostsメソッドが追加されます。

組込み組合

Mongoidは組み込み関連を許可します:

  • 一対一: embeds_one / embedded_in
  • 1対多: embeds_many / embedded_in

アソシエーションを追加するには(User embeds_manyアドレスを指定します)、これをあなたのUserファイルに追加します:

embeds_many :addresses

これをあなたのAddressモデルファイルにAddressます:

embedded_in :user

これは埋め込みますAddress 、あなたの中Userの追加、モデルをaddressesあなたに方法をUserクラス。

データベース呼び出し

Mongoidは可能なときにActiveRecordと似た構文をしようとします。これらの呼び出しをサポートしています。

User.first #Gets first user from the database

User.count #Gets the count of all users from the database

User.find(params[:id]) #Returns the user with the id found in params[:id]

User.where(name: "Bob") #Returns a Mongoid::Criteria object that can be chained
                        #with other queries (like another 'where' or an 'any_in')
                        #Does NOT return any objects from database

User.where(name: "Bob").entries #Returns all objects with name "Bob" from database

User.where(:name.in => ['Bob', 'Alice']).entries #Returns all objects with name "Bob" or "Alice" from database

User.any_in(name: ["Bob", "Joe"]).first #Returns the first object with name "Bob" or "Joe"
User.where(:name => 'Bob').exists? # will return true if there is one or more users with name bob


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow