Module Ddb::Userstamp::Stampable::ClassMethods
In: lib/stampable.rb

Methods

Public Instance methods

This method is automatically called on for all classes that inherit from ActiveRecord, but if you need to customize how the plug-in functions, this is the method to use. Here‘s an example:

  class Post < ActiveRecord::Base
    stampable :stamper_class_name => :person,
              :creator_attribute  => :create_user,
              :updater_attribute  => :update_user,
              :deleter_attribute  => :delete_user
              :deleter            => true
  end

The method will automatically setup all the associations, and create before_save and before_create filters for doing the stamping. 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.

[Source]

    # File lib/stampable.rb, line 71
71:         def stampable(options = {})
72:           compatability = Ddb::Userstamp.compatibility_mode
73:           defaults  = {
74:             :stamper_class_name => :user,
75:             :creator_attribute  => (compatability ? :created_by : :creator_id),
76:             :updater_attribute  => (compatability ? :updated_by : :updater_id),
77:             :deleter_attribute  => (compatability ? :deleted_by : :deleter_id),
78:             :deleter            => !!(options.has_key?(:deleter_attribute) or defined?(Caboose::Acts::Paranoid))
79:           }.merge(options)
80: 
81:           self.stamper_class_name = defaults[:stamper_class_name].to_sym
82:           self.creator_attribute  = defaults[:creator_attribute].to_sym
83:           self.updater_attribute  = defaults[:updater_attribute].to_sym
84:           self.deleter_attribute  = defaults[:deleter_attribute].to_sym
85: 
86:           class_eval do
87:             klass = stamper_class_name.to_s.singularize.camelize
88:             belongs_to :creator, :class_name => klass, :foreign_key => creator_attribute
89:             belongs_to :updater, :class_name => klass, :foreign_key => updater_attribute
90: 
91:             before_save     :set_updater_attribute
92:             before_create   :set_creator_attribute
93: 
94:             if defaults[:deleter]
95:               belongs_to :deleter, :class_name => klass, :foreign_key => deleter_attribute
96:               before_destroy  :set_deleter_attribute
97:             end
98:           end
99:         end

Temporarily allows you to turn stamping off. For example:

  Post.without_stamps do
    post = Post.find(params[:id])
    post.update_attributes(params[:post])
    post.save
  end

[Source]

     # File lib/stampable.rb, line 108
108:         def without_stamps
109:           original_value = self.record_userstamp
110:           self.record_userstamp = false
111:           yield
112:         ensure
113:           self.record_userstamp = original_value
114:         end

[Validate]