module HasLogs::ActAsLog::ClassMethods

Public Instance Methods

act_as_log(options = {}) click to toggle source
# File lib/has_logs/act_as_log.rb, line 12
def act_as_log(options = {})
  return if self.included_modules.include?(ActAsLog::InstanceMethods)
  include ActAsLog::InstanceMethods

  cattr_accessor :originator_class_name

  self.originator_class_name = options[:class_name] || (self.name.gsub /Log\Z/, '')

  class_eval do
    belongs_to :originator, options.merge(class_name: originator_class_name, foreign_key: "#{originator_class_name.underscore}_id", touch: true)

    validates :"#{originator_class_name.underscore}_id", presence: true, uniqueness: { scope: :created_at }
  end
end
act_as_log_of(class_name = nil, options = {}) click to toggle source
# File lib/has_logs/act_as_log.rb, line 8
def act_as_log_of(class_name = nil, options = {})
  act_as_log(options.merge(class_name: class_name))
end
originator_class() click to toggle source
# File lib/has_logs/act_as_log.rb, line 27
def originator_class
  originator_class_name.constantize
end