Created
February 3, 2011 13:19
-
-
Save milep/809457 to your computer and use it in GitHub Desktop.
problem with references_and_referenced_in_many
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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