Module: ActsAsBelongable::Belongable

Extended by:
ActiveSupport::Concern
Defined in:
app/models/concerns/acts_as_belongable/belongable.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#add_to_belonger(belonger, options = {}) ⇒ Object



33
34
35
36
# File 'app/models/concerns/acts_as_belongable/belongable.rb', line 33

def add_to_belonger(belonger, options = {})
  options[:belonger] = belonger
  belongable_belongings.create(options)
end

#add_to_belonger!(belonger, options = {}) ⇒ Object



38
39
40
41
# File 'app/models/concerns/acts_as_belongable/belongable.rb', line 38

def add_to_belonger!(belonger, options = {})
  options[:belonger] = belonger
  belongable_belongings.create!(options)
end

#belongers_with_scope(scope, source_type: nil) ⇒ Object



57
58
59
60
61
# File 'app/models/concerns/acts_as_belongable/belongable.rb', line 57

def belongers_with_scope(scope, source_type: nil)
  return belongable_belongings.where(scope: scope) if source_type.nil?

  belongable_belongings.where(scope: scope, source_type: source_type)
end

#create_belonger(klass, options = {}) ⇒ Object



43
44
45
46
47
48
# File 'app/models/concerns/acts_as_belongable/belongable.rb', line 43

def create_belonger(klass, options = {})
  belonging_options = options.delete(:belonging) || {}
  object = klass.create(options)
  add_to_belonger(object, belonging_options)
  object
end

#create_belonger!(klass, options = {}) ⇒ Object



50
51
52
53
54
55
# File 'app/models/concerns/acts_as_belongable/belongable.rb', line 50

def create_belonger!(klass, options = {})
  belonging_options = options.delete(:belonging) || {}
  object = klass.create!(options)
  add_to_belonger!(object, belonging_options)
  object
end