class ActivePreview::BatchBuilder

Attributes

klass[R]
params_set[R]
parent[R]
saved_models[R]

Public Class Methods

build(**args) click to toggle source
# File lib/active_preview/batch_builder.rb, line 3
def self.build(**args)
  new(**args).build
end
new(klass:, saved_models:, params: nil, parent: nil) click to toggle source
# File lib/active_preview/batch_builder.rb, line 7
def initialize(klass:, saved_models:, params: nil, parent: nil)
  @klass = klass
  @saved_models = saved_models
  @params_set = params
  @parent = parent
end

Public Instance Methods

build() click to toggle source
# File lib/active_preview/batch_builder.rb, line 14
def build
  objects_with_new_attrs.map do |obj, attrs|
    obj ||= klass.new
    attrs ||= {}
    Builder.build(model: obj, params: attrs, parent: parent)
  end
end

Private Instance Methods

objects_with_new_attrs() click to toggle source
# File lib/active_preview/batch_builder.rb, line 26
def objects_with_new_attrs
  return saved_models unless params_set
  if saved_models.size > params_set.size
    saved_models.zip(params_set)
  else
    params_set.zip(saved_models).map(&:reverse!)
  end
end