Sha256: 164aaf4f64662f4b7f8b9036106792d88e441b4817c462c0d7d850c0a1063f2c

Contents?: true

Size: 1.36 KB

Versions: 5

Compression:

Stored size: 1.36 KB

Contents

module Mongoid
  module Userstamp
    extend ActiveSupport::Concern

    included do
      belongs_to Userstamp.config.creator_field, class_name: Userstamp.config.user_model_name, autosave: false, optional: true
      belongs_to Userstamp.config.updater_field, class_name: Userstamp.config.user_model_name, autosave: false, optional: true

      before_validation :set_updater
      before_validation :set_creator

      protected

      def set_updater
        return if !Userstamp.has_current_user?
        self.send("#{Userstamp.config.updater_field}=", Userstamp.current_user)
      end

      def set_creator
        return if !Userstamp.has_current_user? || self.send(Userstamp.config.creator_field)
        self.send("#{Userstamp.config.creator_field}=", Userstamp.current_user)
      end
    end

    class << self
      def config(&block)
        if block_given?
          @@config = Userstamp::Config.new(&block)
        else
          @@config ||= Userstamp::Config.new
        end
      end

      def has_current_user?
        config.user_model.respond_to?(:current)
      end

      def current_user
        config.user_model.try(:current)
      end

      def find_user(user_id)
        begin
          user_id ? Userstamp.config.user_model.unscoped.find(user_id) : nil
        rescue Mongoid::Errors::DocumentNotFound => e
          nil
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
glebtv_mongoid_userstamp-0.10.0 lib/mongoid/userstamp.rb
glebtv_mongoid_userstamp-0.9.2 lib/mongoid/userstamp.rb
glebtv_mongoid_userstamp-0.9.0 lib/mongoid/userstamp.rb
glebtv_mongoid_userstamp-0.8.0 lib/mongoid/userstamp.rb
glebtv_mongoid_userstamp-0.7.2 lib/mongoid/userstamp.rb