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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow