Module: SkuGenerator::ClassMethods
- Defined in:
- lib/sku_generator.rb
Instance Method Summary collapse
-
#sku_generator(column_name, options) ⇒ Object
column_name : Name of the sku column options : parents : array of parent relation, if you want to include sku_initial : specify, any SKU intials if you want, otherwise, it will take first 4 letters from the class name.
Instance Method Details
#sku_generator(column_name, options) ⇒ Object
column_name : Name of the sku column options :
parents : array of parent relation, if you want to include
sku_initial : specify, any SKU intials if you want, otherwise, it will take first 4 letters from the class name.
padding : 0 padding on the model id; default is 6
parent_padding : 0 padding on the parent model's ids; default is 3
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/sku_generator.rb', line 14 def sku_generator column_name, self.after_save :generate_sku define_method 'generate_sku' do sku_initial = (.delete(:sku_initial) or self.class.to_s[0..3].upcase) relational_parents = (.delete(:parents) or []) padding = (.delete(:padding) or 6) parent_padding = (.delete(:parent_padding) or 3) sku_parent_component = relational_parents.map { |parent| self.send(parent).id.to_s.rjust(parent_padding, '0') }.join('') sku_sef_component = self.id.to_s.rjust(padding, '0') sku = sku_initial + sku_parent_component + sku_sef_component self.update_column column_name, sku end end |