Module: ActiveRepository::Associations::ActiveRecordExtensions

Defined in:
lib/active_repository/associations.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#belongs_to_active_repository(association_id, options = {}) ⇒ Object

Defines belongs to type relation between ActiveRepository objects and ActivRecord Models.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/active_repository/associations.rb', line 11

def belongs_to_active_repository(association_id, options = {})
  options = {
    class_name:  association_id.to_s.classify,
    foreign_key: association_id.to_s.foreign_key
  }.merge(options)

  define_method(association_id) do
    options[:class_name].constantize.find_by_id(send(options[:foreign_key]))
  end

  define_method("#{association_id}=") do |new_value|
    send "#{options[:foreign_key]}=", new_value ? new_value.id : nil
  end

  create_reflection(
      :belongs_to,
      association_id.to_sym,
      options,
      options[:class_name].constantize
    )
end