Ruby on Rails
Mongoid
Suche…
Installation
Zuerst fügen Sie Mongoid
zu Ihrem Gemfile
:
gem "mongoid", "~> 4.0.0"
und dann bundle install
ausführen. Oder einfach laufen:
$ gem install mongoid
Führen Sie nach der Installation den Generator aus, um die Konfigurationsdatei zu erstellen:
$ rails g mongoid:config
(myapp)/config/mongoid.yml
wird die Datei (myapp)/config/mongoid.yml
.
Ein Modell erstellen
Erstellen Sie ein Modell (nennen User
es User
), indem Sie User
ausführen:
$ rails g model User
app/models/user.rb
wird die Datei app/models/user.rb
:
class User
include Mongoid::Document
end
Das ist alles, was Sie brauchen, um ein Modell zu haben (allerdings nur ein id
Feld). Im Gegensatz zu ActiveRecord
gibt es keine Migrationsdateien. Alle Datenbankinformationen für das Modell sind in der Modelldatei enthalten.
Zeitstempel werden bei der Generierung nicht automatisch in Ihr Modell aufgenommen. created_at
updated_at
zum Hinzufügen von created_at
und updated_at
zu Ihrem Modell hinzu
include Mongoid::Timestamps
Zu deinem Modell darunter include Mongoid::Document
so hinzu:
class User
include Mongoid::Document
include Mongoid::Timestamps
end
Felder
Gemäß der mongoiden Dokumentation gibt es 16 gültige Feldtypen:
- Array
- BigDecimal
- Boolean
- Datum
- Terminzeit
- Schweben
- Hash
- Ganze Zahl
- BSON :: ObjectId
- BSON :: Binär
- Angebot
- Regexp
- String
- Symbol
- Zeit
- TimeWithZone
Um ein Feld hinzuzufügen (nennen wir es den name
und lassen Sie es einen String
), fügen Sie es Ihrer Modelldatei hinzu:
field :name, type: String
Um einen Standardwert festzulegen, übergeben Sie einfach die default
:
field :name, type: String, default: ""
Klassische Assoziationen
Mongoid erlaubt die klassischen ActiveRecord
Assoziationen:
- Eins-zu-Eins:
has_one
/belongs_to
- Eins-zu-Viele:
has_many
/belongs_to
- Many-to-many:
has_and_belongs_to_many
Um eine Assoziation hinzuzufügen (sagen has_many
Beiträge des Benutzers has_many
), können Sie diese zu Ihrer User
hinzufügen:
has_many :posts
und dies zu deiner Post
Modelldatei:
belongs_to :user
Dies fügt ein Feld user_id
in Ihrem Post
Modell hinzu, fügt Ihrer Post
Klasse eine user
hinzu und fügt Ihrer User
Klasse eine posts
Methode hinzu.
Eingebettete Assoziationen
Mongoid erlaubt eingebettete Assoziationen:
- Eins-zu-Eins:
embeds_one
/embedded_in
- Eins-zu-Viele:
embeds_many
/embedded_in
embeds_many
Sie diese zu Ihrer User
hinzu, um eine Zuordnung hinzuzufügen (sagen wir die embeds_many
Adressen " embeds_many
):
embeds_many :addresses
und dies in Ihre Address
:
embedded_in :user
Dadurch wird Address
in Ihr User
eingebettet und der User
Klasse eine addresses
Methode hinzugefügt.
Datenbankaufrufe
Mongoid versucht , ähnliche Syntax haben ActiveRecord
, wenn er kann. Es unterstützt diese Anrufe (und viele mehr)
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