Skip to content

Commit

Permalink
Changing syntax for alternate User class to be more familiar for MM u…
Browse files Browse the repository at this point in the history
…sers. Now accepts an options hash with :class_name OR :class keys. If the neither key is present, it will default to the standard User class.
  • Loading branch information
Mark Coates (oddlyzen) authored and bkeepers committed Sep 2, 2011
1 parent 4f68bcf commit 1e95f92
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 15 deletions.
8 changes: 4 additions & 4 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ gemspec

group(:development) do
gem 'bson_ext', '~> 1.3.0'
gem 'SystemTimer', :platform => :ruby_18
#gem 'SystemTimer', :platform => :ruby_18

gem 'ruby-debug', :platform => :mri_18
gem 'ruby-debug19', :platform => :mri_19, :require => 'ruby-debug'
gem 'perftools.rb', :platform => :mri, :require => 'perftools'
#gem 'ruby-debug', :platform => :mri_18
gem 'ruby-debug19'#, :platform => :mri_19, :require => 'ruby-debug'
gem 'perftools.rb'#, :platform => :mri, :require => 'perftools'

gem 'rake'
gem 'tzinfo'
Expand Down
7 changes: 3 additions & 4 deletions lib/mongo_mapper/plugins/userstamps.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
require 'logger'
# encoding: UTF-8
module MongoMapper
module Plugins
module Userstamps
extend ActiveSupport::Concern

module ClassMethods
def userstamps!(class_name = 'User')
def userstamps!(options = {})
class_name = options.fetch(:class_name) { options.fetch :class, 'User' }
key :creator_id, ObjectId
key :updater_id, ObjectId
belongs_to :creator, :class_name => class_name
belongs_to :updater, :class_name => class_name
end
def userstamps_for!(class_name = 'User')
userstamps!(class_name)
end
end
end
end
Expand Down
15 changes: 8 additions & 7 deletions test/functional/test_userstamps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,28 @@ class UserstampsTest < Test::Unit::TestCase
userstamps!
end
@document_alt_user = Doc do
userstamps! 'AltUser'
userstamps! :class_name => 'AltUser'
end
@document_for_alt_user = Doc do
userstamps_for! 'AltUser'
@document_alt_user_class = Doc do
userstamps! :class => AltUser
end
@docs = [@document, @document_alt_user, @document_alt_user_class]
end

should "add creator_id key" do
[@document, @document_alt_user, @document_for_alt_user].each{ |d| d.keys.keys.should include('creator_id') }
@docs.each{ |d| d.keys.should include('creator_id') }
end

should "add updater_id key" do
[@document, @document_alt_user, @document_for_alt_user].each{ |d| d.keys.keys.should include('updater_id') }
@docs.each{ |d| d.keys.should include('updater_id') }
end

should "add belongs_to creator" do
[@document, @document_alt_user, @document_for_alt_user].each{ |d| d.associations.keys.should include(:creator) }
@docs.each{ |d| d.associations.keys.should include(:creator) }
end

should "add belongs_to updater" do
[@document, @document_alt_user, @document_for_alt_user].each{ |d| d.associations.keys.should include(:updater) }
@docs.each{ |d| d.associations.keys.should include(:updater) }
end
end
end
4 changes: 4 additions & 0 deletions test/models.rb
Original file line number Diff line number Diff line change
Expand Up @@ -241,3 +241,7 @@ class Article
include MongoMapper::Document
end
end

class AltUser
include MongoMapper::Document
end

0 comments on commit 1e95f92

Please sign in to comment.