Ассоциации с Mongoid - PullRequest
       35

Ассоциации с Mongoid

0 голосов
/ 02 января 2012

У меня есть три простые модели - Car, Details и Details2. Car имеют много Details и Details имеют много Details2.

С MySQL и ActiveRecord я установлю ассоциации следующим образом:

class Car
  has_many :details
end


class Detail
   belongs_to :car
end

В представлении, где у меня есть список автомобилей, у меня есть:

<% @cars.each do |car| -%>
  <%=car.details.count%> #uninitialized constant Details
<% end %>

EDIT2: Вот что у меня в автомобилях в таблице:

db.cars.find()
{ "_id" : ObjectId("4efe69716f85ce447a000054"), "name" : "bmw", "descr" : "asasgasga as gas gas ", "updated_at" : "Sat Dec 31 2011 02:46:25 GMT+0100 (CET)", "created_at" : "Sat Dec 31 2011 02:46:25 GMT+0100 (CET)" }

и детали :

db.details.find()
{ "_id" : ObjectId("4f01106d6f85ce6b850000b8"), "car_id" : ObjectId("4efe69716f85ce447a000054"), "name" : "20120102030325", "descr" : "dsg", "updated_at" : "Mon Jan 02 2012 03:03:25 GMT+0100 (CET)", "created_at" : "Mon Jan 02 2012 03:03:25 GMT+0100 (CET)" }

А в CarsController У меня только в этом действии:

def index
  @cars = Car.all
end

это все, что я делаю.

1 Ответ

2 голосов
/ 02 января 2012

Вы можете повторно использовать то, что вы знаете из ActiveRecord. has_many и belongs_to отлично работают в Mongoid.

Но вы можете воспользоваться базами данных документов (то есть MongoDB) и использовать некоторые встраивания. Чтобы embedded_in работал правильно, вы должны иметь embeds_one или embeds_many на другом конце. Смотри http://mongoid.org/docs/relations/embedded/1-1.html

  class Person
    include Mongoid::Document
    embeds_one :name
  end

  class Name
    include Mongoid::Document
    field :vorname, type: String
    field :nachname, type: String
    embedded_in :person
  end
...