Module: Merit::ClassMethods

Defined in:
lib/merit/model_additions.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) _merit_active_record_specific_config



26
27
# File 'lib/merit/model_additions.rb', line 26

def _merit_active_record_specific_config
end


36
37
38
39
# File 'lib/merit/model_additions.rb', line 36

def _merit_define_badge_related_entries_method
  meritable_class_name = name.demodulize
  Merit::Badge._define_related_entries_method(meritable_class_name)
end

- (Object) _merit_delegate_methods_to_sash

Delegate methods from meritable models to their sash



20
21
22
23
24
# File 'lib/merit/model_additions.rb', line 20

def _merit_delegate_methods_to_sash
  methods = %w(badge_ids badges points add_badge rm_badge
               add_points subtract_points score_points)
  methods.each { |method| delegate method, to: :_sash }
end

- (Object) _merit_mongoid_specific_config



29
30
31
32
33
34
# File 'lib/merit/model_additions.rb', line 29

def _merit_mongoid_specific_config
  field :level, type: Integer, default: 0
  def find_by_id(id)
    where(_id: id).first
  end
end

- (Object) _merit_sash_initializer

_sash initializes a sash if doesn't have one yet. From Rails 3.2 we can override association methods to do so transparently, but merit supports Rails ~> 3.0.0. See: blog.hasmanythrough.com/2012/1/20/modularized-association-methods-in-rails-3-2



50
51
52
53
54
55
# File 'lib/merit/model_additions.rb', line 50

def _merit_sash_initializer
  define_method(:_sash) do
    sash || update_attributes(sash: Sash.create)
    sash
  end
end

- (Object) find_by_id(id)



31
32
33
# File 'lib/merit/model_additions.rb', line 31

def find_by_id(id)
  where(_id: id).first
end

- (Object) has_merit(options = {})



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/merit/model_additions.rb', line 5

def has_merit(options = {})
  # MeritableModel#sash_id is more stable than Sash#meritable_model_id
  # That's why MeritableModel belongs_to Sash. Can't use
  # dependent: destroy as it may raise FK constraint exceptions. See:
  # https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/1079-belongs_to-dependent-destroy-should-destroy-self-before-assocation
  belongs_to :sash, class_name: 'Merit::Sash', inverse_of: nil
  attr_accessible :sash if show_attr_accessible?

  send :_merit_#{Merit.orm}_specific_config"
  _merit_delegate_methods_to_sash
  _merit_define_badge_related_entries_method
  _merit_sash_initializer
end

- (Boolean) show_attr_accessible?



41
42
43
44
# File 'lib/merit/model_additions.rb', line 41

def show_attr_accessible?
  defined?(ProtectedAttributes) ||
    !defined?(ActionController::StrongParameters)
end