Szukaj…


Instalacja

Najpierw dodaj Mongoid do swojego Gemfile :

gem "mongoid", "~> 4.0.0"

a następnie uruchom bundle install . Lub po prostu uruchom:

$ gem install mongoid

Po instalacji uruchom generator, aby utworzyć plik konfiguracyjny:

$ rails g mongoid:config

który utworzy plik (myapp)/config/mongoid.yml .

Tworzenie modelu

Utwórz model (nazwijmy go User ), uruchamiając:

$ rails g model User

który wygeneruje plik app/models/user.rb :

class User
  include Mongoid::Document

end

To wszystko, czego potrzebujesz, aby mieć model (choć tylko pole id ). W przeciwieństwie do ActiveRecord , nie ma plików migracji. Wszystkie informacje o bazie danych dla modelu są zawarte w pliku modelu.

Znaczniki czasu nie są automatycznie uwzględniane w modelu podczas jego generowania. Aby dodać created_at i updated_at do swojego modelu, dodaj

include Mongoid::Timestamps

do twojego modelu poniżej include Mongoid::Document taki jak:

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

end

Fields

Zgodnie z dokumentacją Mongoid istnieje 16 prawidłowych typów pól:

  • Szyk
  • BigDecimal
  • Boolean
  • Data
  • Data i godzina
  • Pływak
  • Haszysz
  • Liczba całkowita
  • BSON :: ObjectId
  • BSON :: Binarne
  • Zasięg
  • Regexp
  • Strunowy
  • Symbol
  • Czas
  • TimeWithZone

Aby dodać pole (nazwijmy go name i niech będzie String ), dodaj to do pliku modelu:

field :name, type: String

Aby ustawić wartość domyślną, wystarczy przekazać default opcję:

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

Klasyczne skojarzenia

Mongoid pozwala klasycznym powiązaniom ActiveRecord :

  • One-to-One: has_one / belongs_to
  • Jeden do wielu: has_many / belongs_to
  • Wiele do wielu: has_and_belongs_to_many

Aby dodać stowarzyszenie (powiedzmy, że użytkownik has_many posty), możesz dodać go do User pliku modelu:

has_many :posts

i to do pliku modelu Post :

belongs_to :user

Spowoduje to dodanie pola user_id do modelu Post , dodanie metody user do klasy Post i dodanie metody posts do klasy User .

Wbudowane skojarzenia

Mongoid umożliwia wbudowane powiązania:

  • Jeden do jednego: embeds_one / embedded_in
  • Jeden do wielu: embeds_many / embedded_in

Aby dodać powiązanie (powiedzmy, że użytkownik umieszcza embeds_many adresów), dodaj to do pliku User :

embeds_many :addresses

i to do pliku modelu Address :

embedded_in :user

Spowoduje to osadzenie Address w modelu User , dodając metodę addresses do klasy User .

Połączenia z bazą danych

Mongoid próbuje mieć podobną składnię jak ActiveRecord kiedy tylko jest to możliwe. Obsługuje te połączenia (i wiele innych)

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow