Module: Mongoid::Userstamp

Extended by:
ActiveSupport::Concern
Defined in:
lib/mongoid/userstamp.rb,
lib/mongoid/userstamp/railtie.rb,
lib/mongoid/userstamp/version.rb,
lib/mongoid/userstamp/mixins/user.rb,
lib/mongoid/userstamp/mixins/model.rb,
lib/mongoid/userstamp/config/gem_config.rb,
lib/mongoid/userstamp/config/user_config.rb,
lib/mongoid/userstamp/config/model_config.rb

Defined Under Namespace

Modules: ClassMethods, Model, User Classes: GemConfig, ModelConfig, Railtie, UserConfig

Constant Summary collapse

VERSION =
'0.4.0'

Class Method Summary collapse

Class Method Details

.add_model_class(model) ⇒ Object



55
56
57
58
# File 'lib/mongoid/userstamp.rb', line 55

def add_model_class(model)
  @model_classes ||= []
  @model_classes << model
end

.add_user_class(user) ⇒ Object



64
65
66
67
# File 'lib/mongoid/userstamp.rb', line 64

def add_user_class(user)
  @user_classes ||= []
  @user_classes << user
end

.config(&block) ⇒ Object



26
27
28
# File 'lib/mongoid/userstamp.rb', line 26

def config(&block)
  @config ||= Mongoid::Userstamp::GemConfig.new(&block)
end

.configure(&block) ⇒ Object

Deprecated.


31
32
33
34
# File 'lib/mongoid/userstamp.rb', line 31

def configure(&block)
  warn 'Mongoid::Userstamp.configure is deprecated. Please use Mongoid::Userstamp.config instead'
  config(&block)
end

.current_user(user_class = nil) ⇒ Object



36
37
38
39
# File 'lib/mongoid/userstamp.rb', line 36

def current_user(user_class = nil)
  user_class ||= user_classes.first
  store[userstamp_key(user_class)]
end

.current_user=(value) ⇒ Object



41
42
43
# File 'lib/mongoid/userstamp.rb', line 41

def current_user=(value)
  set_current_user(value)
end

.model_classesObject



51
52
53
# File 'lib/mongoid/userstamp.rb', line 51

def model_classes
  (@model_classes || []).map{|c| c.is_a?(Class) ? c : c.to_s.classify.constantize }
end

.set_current_user(value, user_class = nil) ⇒ Object

It is better to provide the user class, in case the value is nil.



46
47
48
49
# File 'lib/mongoid/userstamp.rb', line 46

def set_current_user(value, user_class = nil)
  user_class ||= value ? value.class : user_classes.first
  store[userstamp_key(user_class)] = value
end

.storeObject



73
74
75
# File 'lib/mongoid/userstamp.rb', line 73

def store
  defined?(RequestStore) ? RequestStore.store : Thread.current
end

.user_classesObject



60
61
62
# File 'lib/mongoid/userstamp.rb', line 60

def user_classes
  (@user_classes || []).map{|c| c.is_a?(Class) ? c : c.to_s.classify.constantize }
end

.userstamp_key(model) ⇒ Object



69
70
71
# File 'lib/mongoid/userstamp.rb', line 69

def userstamp_key(model)
  "mongoid_userstamp/#{model.to_s.underscore}".to_sym
end