Module: Sequencescape::Api::Associations::HasMany

Defined in:
lib/sequencescape-api/associations/has_many.rb

Defined Under Namespace

Modules: Json, Validation Classes: AssociationProxy, InlineAssociationProxy

Instance Method Summary collapse

Instance Method Details

#has_many(association, options = {}, &block) ⇒ Object

rubocop:todo Metrics/MethodLength



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/sequencescape-api/associations/has_many.rb', line 109

def has_many(association, options = {}, &block) # rubocop:todo Metrics/MethodLength
  association = association.to_sym

  proxy = Class.new(
    case options[:disposition].try(:to_sym)
    when :inline then InlineAssociationProxy
    else AssociationProxy
    end
  )
  proxy.association = association
  proxy.options     = options
  proxy.instance_eval(&block) if block_given?

  association_methods(association, :has_many, proxy)
end