Mongoid: постоянство отношения «1 ко многим» во встроенном документе - PullRequest
0 голосов
/ 09 ноября 2011

У меня проблема с отношениями, сохраняющимися во встроенном документе. Вот пример

require 'mongoid'
require 'mongo'

class User
  include Mongoid::Document
  field :name
  key :name

  embeds_one :garage
end

class Garage
  include Mongoid::Document
  field :name

  has_many :tools, autosave: true
  has_many :cars, autosave: true
end

class Tool
  include Mongoid::Document
  belongs_to :garage, inverse_of: :tools
end

class Car
  include Mongoid::Document
  field :name

  belongs_to :garage, inverse_of: :cars
end

Когда я запускаю следующее:

Mongoid.configure do |config|
  config.master = Mongo::Connection.new.db("mydb")
end

connection = Mongo::Connection.new
connection.drop_database("mydb")
database = connection.db("mydb")


user = User.create!(name: "John")
user.build_garage
user.garage.cars << Car.create!(name: "Bessy")

user.save!
puts "user #{user}, #{user.name}"

user.garage.cars.each do |car|
  puts "car is #{car}"
end

same_user = User.first(conditions: {name: user.name})

puts "same_user #{same_user}, #{same_user.name}"
same_user.garage.cars.each do |car|
  puts "car found is #{car}"
end

вывод:

user #<User:0x00000003619d30>, John
car is #<Car:0x00000003573ca0>
same_user #<User:0x000000034ff760>, John

так что второй раз автомобильный массив пользователя не выводится. Как я могу сохранить массив автомобилей?

Спасибо

1 Ответ

1 голос
/ 15 ноября 2011

Вам нужно сделать user.garage.save, чтобы сохранить встроенный гараж после его заполнения.

...