Buscar..


Instalación

Primero, agregue Mongoid a su Gemfile :

gem "mongoid", "~> 4.0.0"

y luego ejecute bundle install . O simplemente ejecuta:

$ gem install mongoid

Después de la instalación, ejecute el generador para crear el archivo de configuración:

$ rails g mongoid:config

que creará el archivo (myapp)/config/mongoid.yml .

Creando un modelo

Crea un modelo (llamémoslo User ) ejecutando:

$ rails g model User

que generará el archivo app/models/user.rb :

class User
  include Mongoid::Document

end

Esto es todo lo que necesita para tener un modelo (aunque nada más que un campo de id ). A diferencia de ActiveRecord , no hay archivos de migración. Toda la información de la base de datos para el modelo está contenida en el archivo del modelo.

Las marcas de tiempo no se incluyen automáticamente en su modelo cuando lo genera. Para agregar created_at y updated_at a su modelo, agregue

include Mongoid::Timestamps

debajo de tu modelo include Mongoid::Document como:

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

end

Campos

Según la documentación de Mongoid , hay 16 tipos de campos válidos:

  • Formación
  • BigDecimal
  • Booleano
  • Fecha
  • Fecha y hora
  • Flotador
  • Picadillo
  • Entero
  • BSON :: ObjectId
  • BSON :: Binario
  • Distancia
  • Regexp
  • Cuerda
  • Símbolo
  • Hora
  • TimeWithZone

Para agregar un campo (llamémoslo name y que sea una String ), agregue esto a su archivo modelo:

field :name, type: String

Para establecer un valor predeterminado, simplemente pase la opción default :

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

Asociaciones clásicas

Mongoid permite las asociaciones clásicas de ActiveRecord :

  • Uno a uno: has_one / belongs_to
  • Uno a muchos: has_many / belongs_to
  • Muchos a muchos: has_and_belongs_to_many

Para agregar una asociación (digamos que el usuario tiene has_many publicaciones), puede agregar esto a su archivo de modelo de User :

has_many :posts

y esto a tu archivo de modelo de Post :

belongs_to :user

Esto agregará un campo user_id en su modelo de Post , agregará un método de user a su clase de Post y agregará un método de posts a su clase de User .

Asociaciones incrustadas

Mongoid permite Asociaciones Incrustadas:

  • Uno a uno: embeds_one / embedded_in
  • Uno a muchos: embeds_many / embedded_in

Para agregar una asociación (digamos el usuario embeds_many direcciones), agregue esto a su archivo de User :

embeds_many :addresses

Y esto a su archivo de modelo de Address :

embedded_in :user

Esto incorporará la Address en su modelo de User , agregando un método de addresses a su clase de User .

Llamadas a bases de datos

Mongoid intenta tener una sintaxis similar a ActiveRecord cuando puede. Soporta estas llamadas (y muchas más).

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow