2011-11-09 14 views
0

埋め込みドキュメントで永続する関係に問題があります。私は次のことを実行すると、ここでの例では、Mongoid:埋め込みドキュメント内で1対多の関係の永続性

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 

ので、二度目のユーザの車の列が出力されません。どのように車の配列を維持するのですか?あなたはそれを移植した後に埋め込まれたガレージを保存するためにuser.garage.saveを行う必要があり

おかげ

答えて

関連する問題