Ricerca…


Installazione

Innanzitutto, aggiungi Mongoid al tuo Gemfile :

gem "mongoid", "~> 4.0.0"

e quindi eseguire l' bundle install . Oppure esegui semplicemente:

$ gem install mongoid

Dopo l'installazione, eseguire il generatore per creare il file di configurazione:

$ rails g mongoid:config

che creerà il file (myapp)/config/mongoid.yml .

Creare un modello

Crea un modello (chiamiamolo User ) eseguendo:

$ rails g model User

che genererà il file app/models/user.rb :

class User
  include Mongoid::Document

end

Questo è tutto ciò che serve per avere un modello (anche se non un campo id ). A differenza di ActiveRecord , non ci sono file di migrazione. Tutte le informazioni del database per il modello sono contenute nel file del modello.

I timestamp non vengono automaticamente inclusi nel modello quando viene generato. Per aggiungere created_at e updated_at al tuo modello, aggiungi

include Mongoid::Timestamps

al tuo modello di sotto include Mongoid::Document come questo:

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

end

campi

Come da documentazione Mongoid , ci sono 16 tipi di campi validi:

  • schieramento
  • BigDecimal
  • booleano
  • Data
  • Appuntamento
  • Galleggiante
  • hash
  • Numero intero
  • BSON :: ObjectId
  • BSON :: binario
  • Gamma
  • regexp
  • Stringa
  • Simbolo
  • Tempo
  • TimeWithZone

Per aggiungere un campo (chiamiamolo name e lo facciamo essere una String ), aggiungi questo al tuo file di modello:

field :name, type: String

Per impostare un valore predefinito, basta passare l'opzione default :

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

Associazioni classiche

Mongoid consente le classiche associazioni ActiveRecord :

  • Uno a uno: has_one / belongs_to
  • Uno a molti: has_many / belongs_to
  • Molti-a-molti: has_and_belongs_to_many

Per aggiungere un'associazione (diciamo che l'utente ha has_many messaggi), puoi aggiungerla al tuo file modello User :

has_many :posts

e questo al tuo file modello Post :

belongs_to :user

Questo aggiungerà un campo user_id nel tuo modello Post , aggiungerà un metodo user alla tua classe Post e aggiungerà un metodo posts alla tua classe User .

Associazioni incorporate

Mongoid consente le associazioni incorporate:

  • Uno a uno: embeds_one / embedded_in
  • Uno-a-molti: embeds_many / embedded_in

Per aggiungere un'associazione (diciamo che l'utente embeds_many indirizzi), aggiungi questo al tuo file User :

embeds_many :addresses

e questo al tuo file modello Address :

embedded_in :user

Questo incorpora l' Address nel tuo modello User , aggiungendo un metodo di addresses alla tua classe User .

Chiamate di database

Mongoid prova ad avere una sintassi simile a ActiveRecord quando può. Supporta queste chiamate (e molte altre)

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow