Ruby on Rails
Mongoïde
Recherche…
Installation
Tout d'abord, ajoutez Mongoid
à votre Gemfile
:
gem "mongoid", "~> 4.0.0"
puis exécutez l’ bundle install
. Ou lancez simplement:
$ gem install mongoid
Après l'installation, exécutez le générateur pour créer le fichier de configuration:
$ rails g mongoid:config
qui va créer le fichier (myapp)/config/mongoid.yml
.
Créer un modèle
Créez un modèle (appelons-le User
) en exécutant:
$ rails g model User
qui va générer le fichier app/models/user.rb
:
class User
include Mongoid::Document
end
C'est tout ce dont vous avez besoin pour avoir un modèle (mais rien d'autre qu'un champ d' id
). Contrairement à ActiveRecord
, il n'y a pas de fichiers de migration. Toutes les informations de base de données pour le modèle sont contenues dans le fichier modèle.
Les horodatages ne sont pas automatiquement inclus dans votre modèle lorsque vous le générez. Pour ajouter created_at
et updated_at
à votre modèle, ajoutez
include Mongoid::Timestamps
à votre modèle ci-dessous include Mongoid::Document
comme ça:
class User
include Mongoid::Document
include Mongoid::Timestamps
end
Des champs
Selon la documentation Mongoid , il existe 16 types de champs valides:
- Tableau
- BigDecimal
- Booléen
- Rendez-vous amoureux
- DateTime
- Flotte
- Hacher
- Entier
- BSON :: ObjectId
- BSON :: Binaire
- Gamme
- Regexp
- Chaîne
- symbole
- Temps
- TimeWithZone
Pour ajouter un champ (appelons-le name
et faites-en une String
), ajoutez-le à votre fichier modèle:
field :name, type: String
Pour définir une valeur par défaut, il suffit de transmettre l’option default
:
field :name, type: String, default: ""
Associations Classiques
Mongoid permet les associations classiques ActiveRecord
:
- One-to-one:
has_one
/belongs_to
- Un-à-plusieurs:
has_many
/belongs_to
- Plusieurs à plusieurs:
has_and_belongs_to_many
Pour ajouter une association (disons l'utilisateur has_many
posts), vous pouvez l'ajouter à votre fichier de modèle d' User
:
has_many :posts
et ceci à votre fichier modèle Post
:
belongs_to :user
Cela va ajouter un champ user_id
dans votre modèle Post
, ajouter une méthode user
à votre classe Post
et ajouter une méthode de posts
à votre classe User
.
Associations embarquées
Mongoid autorise les associations embarquées:
- One-to-one:
embeds_one
/embedded_in
- Un à plusieurs:
embeds_many
/embedded_in
Pour ajouter une association (disons l'utilisateur embeds_many
adresses), ajoutez ceci à votre fichier User
:
embeds_many :addresses
et ceci à votre fichier de modèle d' Address
:
embedded_in :user
Cela incorporera l' Address
dans votre modèle d' User
, en ajoutant une méthode d' addresses
à votre classe d' User
.
Appels de base de données
Mongoid essaie d'avoir une syntaxe similaire à ActiveRecord
quand c'est possible. Il prend en charge ces appels (et beaucoup plus)
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