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
  end

The method will automatically setup all the associations, and create before_save and before_create filters for doing the stamping.

[Source]

    # File lib/stampable.rb, line 68
68:         def stampable(options = {})
69:           defaults  = {
70:                         :stamper_class_name => :user,
71:                         :creator_attribute  => Ddb::Userstamp.compatibility_mode ? :created_by : :creator_id,
72:                         :updater_attribute  => Ddb::Userstamp.compatibility_mode ? :updated_by : :updater_id,
73:                         :deleter_attribute  => Ddb::Userstamp.compatibility_mode ? :deleted_by : :deleter_id
74:                       }.merge(options)
75: 
76:           self.stamper_class_name = defaults[:stamper_class_name].to_sym
77:           self.creator_attribute  = defaults[:creator_attribute].to_sym
78:           self.updater_attribute  = defaults[:updater_attribute].to_sym
79:           self.deleter_attribute  = defaults[:deleter_attribute].to_sym
80: 
81:           class_eval do
82:             belongs_to :creator, :class_name => self.stamper_class_name.to_s.singularize.camelize,
83:                                  :foreign_key => self.creator_attribute
84:                                  
85:             belongs_to :updater, :class_name => self.stamper_class_name.to_s.singularize.camelize,
86:                                  :foreign_key => self.updater_attribute
87:                                  
88:             before_save     :set_updater_attribute
89:             before_create   :set_creator_attribute
90:                                  
91:             if defined?(Caboose::Acts::Paranoid)
92:               belongs_to :deleter, :class_name => self.stamper_class_name,
93:                                    :foreign_key => self.deleter_attribute
94:               before_destroy  :set_deleter_attribute
95:             end
96:           end
97:         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 106
106:         def without_stamps
107:           original_value = self.record_userstamp
108:           self.record_userstamp = false
109:           yield
110:           self.record_userstamp = original_value
111:         end

[Validate]