Skip to content

Instantly share code, notes, and snippets.

@merbjedi
Created September 24, 2009 13:24
Show Gist options
  • Select an option

  • Save merbjedi/192733 to your computer and use it in GitHub Desktop.

Select an option

Save merbjedi/192733 to your computer and use it in GitHub Desktop.
require 'rubygems'
gem 'dm-core', "0.10"
require 'dm-core'
gem 'data_objects', "0.10"
gem 'do_sqlite3', "0.10"
DataMapper.setup(:sqlite3, 'sqlite3::memory:')
DataMapper::Repository.adapters[:default] = DataMapper::Repository.adapters[:sqlite3]
class Post
include DataMapper::Resource
property :id, Serial
property :comments_count, Integer, :default => 0
has n, :comments
end
class Comment
include DataMapper::Resource
property :id, Serial
belongs_to :post
end
class User
include DataMapper::Resource
property :id, Serial
property :groups_count, Integer, :default => 0
has n, :group_memberships
has n, :groups, :through => :group_memberships, :class_name => "Group", :via => :group, :parent_key => [:id]
end
class Group
include DataMapper::Resource
property :id, Serial
property :members_count, Integer, :default => 0
has n, :group_memberships
has n, :members, :through => :group_memberships, :class_name => "User", :via => :member, :parent_key => [:id]
end
class GroupMembership
include DataMapper::Resource
property :id, Serial
belongs_to :group
belongs_to :member, :class_name => "User", :child_key => [:user_id]
end
GroupMembership.auto_migrate!
User.auto_migrate!
Group.auto_migrate!
Comment.auto_migrate!
Post.auto_migrate!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment