Sha256: 179e4a74b3ed136c48d2c7ea8457bd1e725451b40df74fe9931d6c9de28439db

Contents?: true

Size: 1.05 KB

Versions: 22

Compression:

Stored size: 1.05 KB

Contents

class Admin::ProductModifier
  def initialize(product, params={})
    @product = product
    @raw_params = params
  end

  def product_hash
    _product.to_ember_hash
  end

  def error_hash
    _product.errors.to_h
  end

  def update!
    _bad_relationships.map(&:destroy)
    _product.tap(&:save!)
  end

  def satisfy_specifications?
    _pictures.all?(&:valid?) && _good_relationships.all?(&:valid?) && _product.valid?
  end

  private
  def _product
    @product.tap { |p| p.assign_attributes _assignable_attributes }
  end

  def _assignable_attributes
    @raw_params.permit(*Apiv1::Product::Fields)
  end

  def _pictures
    _pictures_factory.pictures
  end

  def _bad_relationships
    _relationships_factory.bad_relationships
  end

  def _good_relationships
    _relationships_factory.good_relationships
  end

  def _relationships_factory
    @relationships_factory ||= Admin::TaxonRelationshipsFactory.new _product, @raw_params[:taxons]
  end

  def _pictures_factory
    @pictures_factory ||= Admin::PicturesFactory.new _product, @raw_params[:pictures]
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
cloudrider-0.3.23 generica/app/models/admin/product_modifier.rb
cloudrider-0.3.22 generica/app/models/admin/product_modifier.rb
cloudrider-0.3.21 generica/app/models/admin/product_modifier.rb
cloudrider-0.3.20 generica/app/models/admin/product_modifier.rb
cloudrider-0.3.0 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.18 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.15 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.14 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.12 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.11 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.10 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.9 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.8 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.7 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.6 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.5 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.4 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.3 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.2 generica/app/models/admin/product_modifier.rb
cloudrider-0.2.1 generica/app/models/admin/product_modifier.rb