Ruby on Rails
Mongoid
Sök…
Installation
Lägg först Mongoid till din Gemfile :
gem "mongoid", "~> 4.0.0"
och kör sedan bundle install . Eller bara springa:
$ gem install mongoid
Efter installationen kör du generatorn för att skapa konfigurationsfilen:
$ rails g mongoid:config
vilket skapar filen (myapp)/config/mongoid.yml .
Skapa en modell
Skapa en modell (låter oss kalla den User ) genom att köra:
$ rails g model User
vilket genererar app/models/user.rb :
class User
include Mongoid::Document
end
Detta är allt du behöver för att ha en modell (om än inget annat än ett id fält). Till skillnad från ActiveRecord finns det inga migrationsfiler. All databasinformation för modellen finns i modellfilen.
Tidsstämplar ingår inte automatiskt i din modell när du genererar den. Lägg till created_at och updated_at till din modell
include Mongoid::Timestamps
till din modell under include Mongoid::Document så:
class User
include Mongoid::Document
include Mongoid::Timestamps
end
Fields
Enligt Mongoid-dokumentationen finns det 16 giltiga fälttyper:
- Array
- BigDecimal
- Boolean
- Datum
- Datum Tid
- Flyta
- Hash
- Heltal
- BSON :: ObjectId
- BSON :: Binary
- Räckvidd
- Regexp
- Sträng
- Symbol
- Tid
- TimeWithZone
För att lägga till ett fält (låt oss kalla det name och ha det vara en String ), lägg till detta till din modell fil:
field :name, type: String
För att ställa in ett standardvärde, ange bara default :
field :name, type: String, default: ""
Klassiska föreningar
Mongoid tillåter de klassiska ActiveRecord föreningarna:
- En-till-en:
has_one/belongs_to - En-till-många:
has_many/belongs_to - Många till många:
has_and_belongs_to_many
För att lägga till en förening (låt säga de has_many inlägg), kan du lägga detta till din User modell fil:
has_many :posts
och detta till din Post modellfil:
belongs_to :user
Detta kommer att lägga till en user_id fält i Post modell, lägga till en user till Post klass och lägga till en posts metod för att din User
Inbyggda föreningar
Mongoid tillåter inbäddade föreningar:
- En-till-en:
embeds_one/embedded_in - En-till-många:
embeds_many/embedded_in
För att lägga till en förening (låt säga användaren embeds_many adresser), lägg till detta till din User fil:
embeds_many :addresses
och detta till din Address :
embedded_in :user
Detta kommer bädda Address i User modell, lägga till en addresses metod för att din User
Databassamtal
Mongoid försöker ha liknande syntax som ActiveRecord när det kan. Det stöder dessa samtal (och många fler)
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