Class: Caboose::Variant

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/caboose/variant.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_by_options(product_id, option1 = nil, option2 = nil, option3 = nil) ⇒ Object

Class Methods



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'app/models/caboose/variant.rb', line 53

def self.find_by_options(product_id, option1=nil, option2=nil, option3=nil)
  
  # Create the vars that will become the full conditions statement
  where  = ['product_id=?']
  values = [product_id.to_i]
  
  # Append option values if they exist
  
  if option1
    where  << 'option1=?'
    values << option1
  end
  
  if option2
    where  << 'option2=?'
    values << option2
  end
  
  if option3
    where  << 'option3=?'
    values << option3
  end
  
  # Combine all the options into a single conditions statement
  conditions = [ where.join(' AND ') ].concat(values)
  
  # Return whatever is found
  return Variant.where(conditions).first
end

Instance Method Details

#as_json(options = {}) ⇒ Object

Instance Methods



87
88
89
90
91
92
# File 'app/models/caboose/variant.rb', line 87

def as_json(options={})
  self.attributes.merge({
    :images => self.product_images.any? ? self.product_images : [self.product.product_images.first],
    :title => "#{self.product.title} (#{self.options.join(', ')})"
  })
end

#check_nil_fieldsObject



44
45
46
47
# File 'app/models/caboose/variant.rb', line 44

def check_nil_fields
  self.price       = 0.00 if self.price.nil?
  self.sale_price  = 0.00 if self.sale_price.nil?                  
end

#optionsObject



98
99
100
101
102
103
104
# File 'app/models/caboose/variant.rb', line 98

def options
  arr = []
  arr << self.option1 if self.option1 && self.option1.strip.length > 0
  arr << self.option2 if self.option2 && self.option2.strip.length > 0
  arr << self.option3 if self.option3 && self.option3.strip.length > 0
  return arr
end

#titleObject



94
95
96
# File 'app/models/caboose/variant.rb', line 94

def title
  return self.options.join(' / ')
end