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