Поиск…


Монтаж

Сначала добавьте Mongoid в ваш Gemfile :

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_at и updated_at в вашу модель, добавьте

include Mongoid::Timestamps

к вашей модели внизу include Mongoid::Document :

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

end

поля

В соответствии с Монгольской документацией существует 16 допустимых типов полей:

  • массив
  • BigDecimal
  • логический
  • Дата
  • DateTime
  • терка
  • гашиш
  • целое число
  • BSON :: ObjectId
  • BSON :: Binary
  • Спектр
  • Regexp
  • строка
  • Условное обозначение
  • Время
  • TimeWithZone

Чтобы добавить поле (назовем его name и пусть оно будет String ), добавьте его в файл модели:

field :name, type: String

Чтобы установить значение по умолчанию, просто перейдите по default :

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

Классические ассоциации

Mongoid позволяет классические ассоциации ActiveRecord :

  • Один-к-одному: has_one / belongs_to
  • Один-ко-многим: has_many / belongs_to
  • Много-ко-многим: has_and_belongs_to_many

Чтобы добавить ассоциацию (скажем, сообщения пользователя has_many ), вы можете добавить это в свой файл модели User :

has_many :posts

и это для вашего файла модели Post :

belongs_to :user

Это добавит поле user_id в вашу модель Post , добавит user метод в класс Post и добавит метод posts в ваш класс User .

Встраиваемые ассоциации

Монгоид допускает встраиваемые ассоциации:

  • embeds_one : embeds_one / embedded_in
  • Один-ко-многим: embeds_many / embedded_in

Чтобы добавить ассоциацию (допустим, пользователь embeds_many адресов), добавьте это в свой файл User :

embeds_many :addresses

и это в файл модели вашего 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