Skip to content

Commit

Permalink
make stampable a bit more readable
Browse files Browse the repository at this point in the history
  • Loading branch information
grosser committed Aug 9, 2010
1 parent 04dbbe5 commit b8685c4
Showing 1 changed file with 11 additions and 13 deletions.
24 changes: 11 additions & 13 deletions lib/stampable.rb
Expand Up @@ -69,32 +69,30 @@ module ClassMethods
# By default, the deleter association and before filter are not defined unless you are using
# acts_as_paranoid or you set the :deleter_attribute or set the :deleter option to true.
def stampable(options = {})
compatability = Ddb::Userstamp.compatibility_mode
defaults = {
:stamper_class_name => :user,
:creator_attribute => Ddb::Userstamp.compatibility_mode ? :created_by : :creator_id,
:updater_attribute => Ddb::Userstamp.compatibility_mode ? :updated_by : :updater_id,
:deleter_attribute => Ddb::Userstamp.compatibility_mode ? :deleted_by : :deleter_id,
:deleter => options.has_key?(:deleter_attribute) || defined?(Caboose::Acts::Paranoid) ? true : false
}.merge(options)
:stamper_class_name => :user,
:creator_attribute => (compatability ? :created_by : :creator_id),
:updater_attribute => (compatability ? :updated_by : :updater_id),
:deleter_attribute => (compatability ? :deleted_by : :deleter_id),
:deleter => !!(options.has_key?(:deleter_attribute) or defined?(Caboose::Acts::Paranoid))
}.merge(options)

self.stamper_class_name = defaults[:stamper_class_name].to_sym
self.creator_attribute = defaults[:creator_attribute].to_sym
self.updater_attribute = defaults[:updater_attribute].to_sym
self.deleter_attribute = defaults[:deleter_attribute].to_sym

class_eval do
belongs_to :creator, :class_name => self.stamper_class_name.to_s.singularize.camelize,
:foreign_key => self.creator_attribute

belongs_to :updater, :class_name => self.stamper_class_name.to_s.singularize.camelize,
:foreign_key => self.updater_attribute
klass = stamper_class_name.to_s.singularize.camelize
belongs_to :creator, :class_name => klass, :foreign_key => creator_attribute
belongs_to :updater, :class_name => klass, :foreign_key => updater_attribute

before_save :set_updater_attribute
before_create :set_creator_attribute

if defaults[:deleter]
belongs_to :deleter, :class_name => self.stamper_class_name.to_s.singularize.camelize,
:foreign_key => self.deleter_attribute
belongs_to :deleter, :class_name => klass, :foreign_key => deleter_attribute
before_destroy :set_deleter_attribute
end
end
Expand Down

0 comments on commit b8685c4

Please sign in to comment.