2011-09-01 63 views
0

嘿,這是我的第一篇文章這麼告訴我,如果我不給你足夠的信息多對多持久紅寶石mongoid

所以,我嘗試ruby1.9.2和使用mongoid2.2.0與mongodb1.8.2和我我無法將數據庫文檔保存在具有多對多關係的代碼中。

require 'mongoid' 
require 'mongo' 

Mongoid.load!("../Configurations/mongoid.yml") 

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

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

class Project 
    include Mongoid::Document 
    field :name, type: String 
    key :name 
    field :numPeople, type: Integer 
    has_and_belongs_to_many :people 
end 

class Person 
    include Mongoid::Document 
    field :name, type: String 
    key :name 
    field :numProjects, type: Integer, default: 0 
    has_and_belongs_to_many :projects 

    def add_project(project_name) 
    project = Project.create(name: project_name) 
    self.numProjects = self.numProjects + 1 
    self.projects << project 
    self.save 
    end 
    def has_project?(project_name) 
    self.projects.each do |project| 
     if project.name.upcase == project_name.upcase 
     return true 
     end 
    end 
    return false 
    end 
end 

database = Project.create(name: "Database") 

alice = Person.create(name: "Alice") 
alice.add_project("Database") 
puts "has project? #{alice.has_project?("Database")}"#outputs true 


puts "Alice has #{alice.numProjects} projects"#outputs 1 
puts "Alice really has #{alice.projects.size} projects"#outputs 1 

editor = Project.create(name: "Editor") 

john = Person.create(name: "John") 
john.has_project?("Editor") 
john.add_project("Editor") 
puts "has project? #{john.has_project?("Editor")}"#outputs false 

puts "John has #{john.numProjects} projects"#outputs 1 
puts "John really has #{john.projects.size} projects"#outputs 0 

operatingSystem = Project.create(name: "OperatingSystem") 
drinking = Project.create(name: "Drinking") 

henry = Person.create(name: "Henry") 
henry.add_project("OperatingSystem") 
henry.has_project?("OperatingSystem") 
henry.add_project("drinking") 
henry.add_project("Editor") 

puts "Henry has #{henry.numProjects} projects"#outputs 3 
puts "Henry really has #{henry.projects.size} projects"# outputs 3 

所以問題是約翰輸出,他有0個項目,當我添加一個。

奇怪的是,當我使用mongo終端檢查數據庫時,它顯示約翰有一個項目「編輯器」,代碼沒有在john.projects.size中找到。

理想情況下,我調用add_project和has_project的順序?不應該影響代碼和事項。

  • 感謝

回答

0

什麼都看不到你的代碼錯誤,但你在這裏運行它,我得到了相同的結果。

看起來它可能是一個已知的問題 - https://github.com/mongoid/mongoid/issues/1198

+0

哦確定其正在處理。我想我可以等待解決。重新加載現在工作。謝謝 – GTDev