嘿,這是我的第一篇文章這麼告訴我,如果我不給你足夠的信息多對多持久紅寶石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的順序?不應該影響代碼和事項。
- 感謝
哦確定其正在處理。我想我可以等待解決。重新加載現在工作。謝謝 – GTDev