Sha256: 42245984baee824d7d8e048448738f227a3a2b96c0ec02665b011128ae20042b

Contents?: true

Size: 1.3 KB

Versions: 5

Compression:

Stored size: 1.3 KB

Contents

module Mongoid
  module Userstamp
    extend ActiveSupport::Concern

    included do
      belongs_to Userstamp.config.creator_field, class_name: Userstamp.config.user_model_name
      belongs_to Userstamp.config.updater_field, class_name: Userstamp.config.user_model_name

      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.6.2 lib/mongoid/userstamp.rb
glebtv_mongoid_userstamp-0.6.1 lib/mongoid/userstamp.rb
glebtv_mongoid_userstamp-0.6.0 lib/mongoid/userstamp.rb
glebtv_mongoid_userstamp-0.5.0 lib/mongoid/userstamp.rb
glebtv_mongoid_userstamp-0.4.1 lib/mongoid/userstamp.rb