Skip to content

Instantly share code, notes, and snippets.

@milep
Created February 3, 2011 13:19
Show Gist options
  • Save milep/809457 to your computer and use it in GitHub Desktop.
Save milep/809457 to your computer and use it in GitHub Desktop.
problem with references_and_referenced_in_many
require "rubygems"
require "mongoid"
require "test/unit"
Mongoid.configure do |config|
name = "ref_test"
config.master = Mongo::Connection.new.db(name)
config.logger = nil
end
Mongoid.master.collections.select do |collection|
collection.name !~ /system/
end.each(&:drop)
class Person
include Mongoid::Document
field :name
references_and_referenced_in_many :preferences
end
class Preference
include Mongoid::Document
field :name
references_and_referenced_in_many :people
end
class TestPerson < Test::Unit::TestCase
def setup
@person = Person.create(:name => "Billy")
@pref_a = Preference.create(:name => "aaa")
@pref_b = Preference.create(:name => "bbb")
end
def teardown
@person.destroy
@pref_a.destroy
@pref_b.destroy
end
def test_relation_foreign_keys
@person.preferences = [ @pref_a ]
@person.save
@person.preferences = [ @pref_b ]
@person.save
@person.reload
@pref_a.reload
@pref_b.reload
assert @pref_a.person_ids == [], "pref_a.people should be empty"
end
def test_clear_relations
@person.preferences = [ @pref_a, @pref_b ]
@person.save
@person.preferences = []
@person.save
@person.reload
assert @person.preference_ids == [], "preferences should be empty"
assert @pref_a.person_ids == [], "pref_a.people should be empty"
assert @pref_b.person_ids == [], "pref_b.people should be empty"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment