Module: ActiveRecord::JSONB::Associations::Builder::HasMany

Defined in:
lib/activerecord/jsonb/associations/builder/has_many.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#add_association_accessor_methods(mixin, reflection) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/activerecord/jsonb/associations/builder/has_many.rb', line 18

def add_association_accessor_methods(mixin, reflection)
  mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1
    def [](key)
      key = key.to_s
      if key.ends_with?('_ids') &&
          #{reflection.options[:store]}.keys.include?(key)
        #{reflection.options[:store]}[key]
      else
        super
      end
    end
  CODE
end

#define_accessors(mixin, reflection) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/activerecord/jsonb/associations/builder/has_many.rb', line 10

def define_accessors(mixin, reflection)
  if reflection.options.key?(:store)
    add_association_accessor_methods(mixin, reflection)
  end

  super
end

#valid_options(options) ⇒ Object



6
7
8
# File 'lib/activerecord/jsonb/associations/builder/has_many.rb', line 6

def valid_options(options)
  super + %i[store foreign_store]
end