Method: Xsys::Model::Product#initialize
- Defined in:
- lib/xsys/model/product.rb
#initialize(attributes = {}) ⇒ Product
Returns a new instance of Product.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/xsys/model/product.rb', line 18 def initialize(attributes={}) time_fields = ['cost_update_time', 'last_cost_update_time', 'price_update_time', 'real_cost_update_time'] date_fields = ['cost_update_date', 'last_cost_update_date', 'price_update_date', 'real_cost_update_date', 'availability_date'] decimal_fields = ['vat_rate', 'taxed_cost', 'vat_cost', 'total_cost', 'last_total_cost', 'last_taxed_cost', 'regular_price', 'reduced_price', 'credit_card_price', 'total_real_cost'] attributes.each do |k, v| if k.to_s == 'category' @category = ProductCategory.new(v) unless v.nil? elsif k.to_s == 'provider' @provider = ProductProvider.new(v) unless v.nil? elsif k.to_s == 'stocks' @stocks = v.map { |x| Stock.new(x) } unless v.nil? elsif k.to_s == 'prices' @prices = v.map { |x| ProductPriceList.new(x) } unless v.nil? elsif k.to_s == 'packages' @packages = v.map { |x| ProductPackage.new(x) } unless v.nil? elsif time_fields.include?(k.to_s) self.send("#{k}=", Time.parse(v)) unless v.nil? elsif date_fields.include?(k.to_s) self.send("#{k}=", Date.parse(v)) unless v.nil? elsif decimal_fields.include?(k.to_s) self.send("#{k}=", BigDecimal.new(v)) unless v.nil? else self.send("#{k}=", v) if self.respond_to?(k) end end end |