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