Skip to content

Instantly share code, notes, and snippets.

@xenodesystems
Created November 16, 2012 04:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xenodesystems/4084126 to your computer and use it in GitHub Desktop.
Save xenodesystems/4084126 to your computer and use it in GitHub Desktop.
Xenode Rails Examples #4 (Mongoid has_many :through)
class Kid
include Mongoid::Document
has_many :stars # Definimos que el niño puede tener muchas estrellas
field :name, type: String
# A continuación, definimos un método que nos permita obtener los premios de un niño
def prizes
stars.flat_map(&:prize) # Esto resultará en una query por cada premio relacionado con "niño"
end
end
class Prize
include Mongoid::Document
has_many :stars # Definimos que el premio puede "tener muchas estrellas"
# (Esto para interconectar ambos modelos aunque no suene tan lógico)
field :minimum, type: Integer
field :name, type: String
end
class Star
include Mongoid::Document
# Establecemos que este modelo le pertenece a los que queremos interconectar
# a través del mismo...
belongs_to :kid
belongs_to :prize
field :qty, type: Integer
# Necesitamos que este modelo pueda almacenar los ID's
# de c/u de los objetos pertenecientes a los modelos que
# va a inter-relacionar, por lo tanto los añadimos como campo.
field :kid_id, type: String
field :prize_id, type: String
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment