Ruby on Rails
Mongoid
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