Skip to content

Instantly share code, notes, and snippets.

@bernerdschaefer
Created January 10, 2011 16:49
Show Gist options
  • Save bernerdschaefer/773035 to your computer and use it in GitHub Desktop.
Save bernerdschaefer/773035 to your computer and use it in GitHub Desktop.
Chaining association queries on instance unexpectedly resets foreign keys
require 'test/unit/assertions'
require 'dm-core'
require 'dm-sqlite-adapter'
require 'dm-migrations'
DataMapper.setup :default, "sqlite::memory:"
class Activity
include DataMapper::Resource
property :id, Serial
belongs_to :post, required: false
belongs_to :user, required: false
end
class Post
include DataMapper::Resource
property :id, Serial
belongs_to :user
has n, :activities
end
class User
include DataMapper::Resource
property :id, Serial
has n, :posts
has n, :activities
def all_activities
activities | posts.activities
end
end
DataMapper.auto_migrate!
user = User.create
user.activities.create
post = Post.create(user: user)
post.activities.create
user_activity, post_activity = user.all_activities
include Test::Unit::Assertions
assert_equal user.id, user_activity.user_id
assert_equal nil, user_activity.post_id
assert_equal post.id, post_activity.post_id
assert_equal nil, post_activity.user_id
# FAIL:
# <nil> expected but was <1>
# post_activity.dirty_attributes # => {:user_id => 1}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment