module SnFoil::Contexts::BuildContext
Public Instance Methods
build(params:, entity: nil, **options)
click to toggle source
# File lib/sn_foil/contexts/build_context.rb, line 18 def build(params:, entity: nil, **options) new(entity).build(**options, params: params) end
setup_build(method = nil, **options, &block)
click to toggle source
# File lib/sn_foil/contexts/build_context.rb, line 22 def setup_build(method = nil, **options, &block) raise ArgumentError, '#setup_build requires either a method name or a block' if method.nil? && block.nil? (@i_setup_build_hooks ||= []) << { method: method, block: block, if: options[:if], unless: options[:unless] } end
setup_build_hooks()
click to toggle source
# File lib/sn_foil/contexts/build_context.rb, line 53 def setup_build_hooks self.class.i_setup_build_hooks || [] end
setup_build_object(params: {}, object: nil, **options)
click to toggle source
# File lib/sn_foil/contexts/build_context.rb, line 29 def setup_build_object(params: {}, object: nil, **options) object = if object wrap_object(object) else klass = options.fetch(:model) { model } wrap_object(klass).new end object.attributes = params options.merge! object: object end
Private Instance Methods
before_setup_build_object(**options)
click to toggle source
# File lib/sn_foil/contexts/build_context.rb, line 59 def before_setup_build_object(**options) options = setup(**options) options = setup_hooks.reduce(options) { |opts, hook| run_hook(hook, opts) } options = setup_build(**options) setup_build_hooks.reduce(options) { |opts, hook| run_hook(hook, opts) } end