Zoeken…


Installatie

Voeg eerst Mongoid aan je Gemfile :

gem "mongoid", "~> 4.0.0"

en voer vervolgens bundle install . Of voer gewoon uit:

$ gem install mongoid

Voer na installatie de generator uit om het configuratiebestand te maken:

$ rails g mongoid:config

waarmee het bestand (myapp)/config/mongoid.yml .

Een model maken

Maak een model (laten we het User noemen) door te draaien:

$ rails g model User

waarmee het bestand app/models/user.rb wordt gegenereerd:

class User
  include Mongoid::Document

end

Dit is alles wat je nodig hebt om een model te hebben (zij het alleen een id veld). In tegenstelling tot ActiveRecord zijn er geen migratiebestanden. Alle database-informatie voor het model bevindt zich in het modelbestand.

Tijdstempels worden niet automatisch opgenomen in uw model wanneer u het genereert. Voeg created_at en updated_at aan uw model

include Mongoid::Timestamps

naar je model eronder include Mongoid::Document like so:

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

end

Fields

Volgens de Mongoid-documentatie zijn er 16 geldige veldtypen:

  • reeks
  • BigDecimal
  • Boolean
  • Datum
  • Datum Tijd
  • Vlotter
  • hachee
  • Geheel getal
  • Bson :: ObjectId
  • Bson :: Binary
  • reeks
  • regexp
  • Draad
  • Symbool
  • Tijd
  • TimeWithZone

Voeg een veld toe aan uw modelbestand om een veld toe te voegen (laten we het een name noemen en een String ):

field :name, type: String

Om een standaardwaarde in te stellen, geeft u gewoon de default :

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

Klassieke verenigingen

Mongoid maakt de klassieke ActiveRecord associaties mogelijk:

  • Eén-op-één: has_one / belongs_to
  • Eén-op-veel: has_many / belongs_to
  • Veel-op-veel: has_and_belongs_to_many

Om een associatie toe te voegen (laten we zeggen dat de gebruiker has_many berichten heeft), kunt u dit toevoegen aan uw User :

has_many :posts

en dit in uw Post modelbestand:

belongs_to :user

Dit zal een add user_id veld in je Post model, voeg een user methode om uw Post klasse en voeg een posts methode om uw User klasse.

Ingesloten verenigingen

Mongoid staat ingesloten verenigingen toe:

  • Eén op één: embeds_one / embedded_in
  • Eén-op-veel: embeds_many / embedded_in

Om een koppeling toe te voegen (laten we zeggen de gebruiker embeds_many adressen), voegt u deze toe aan uw User :

embeds_many :addresses

en dit in uw Address :

embedded_in :user

Hiermee wordt Address in uw User ingesloten, waardoor een addresses aan uw User .

Database-oproepen

Mongoid probeert een soortgelijke syntaxis te hebben als ActiveRecord wanneer dit mogelijk is. Het ondersteunt deze oproepen (en nog veel meer)

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow