class SBrand < ApplicationRecord has_many :p_products has_many :p_product_refs, through: :p_products validates :name, :presence => true, :uniqueness => true before_save do if self.code.blank? generate_code end end def generate_code if self.code.blank? prefix = self.name.slice(0, 4).to_slug.upcase last_number = 1 code = prefix + "%02d" % [last_number] while self.class.find_by(code: code) last_number += 1 code = prefix + "%02d" % [last_number] end self.code = code end end end