pollen_app/app/models/p_product_sub_cat.rb
Nicolas Bally 120e9803eb initial
2020-04-28 14:51:42 +02:00

64 lines
1.4 KiB
Ruby

class PProductSubCat < ApplicationRecord
has_many :p_product_p_product_sub_cats, :dependent => :destroy
attr_accessor :skip_before_update, :skip_permalink
has_many :p_products, :through => :p_product_p_product_sub_cats
acts_as_tree
validates :code, :presence => true, uniqueness: { scope: :parent_id}
validates :name, :presence => true
def member_label
"#{self.code} #{self.name}"
end
before_create do
if !position
top = PProductSubCat.where( :parent_id => self.parent_id).order("position DESC").first
if top
self.position = top.position.to_i + 1
else
self.position = 1
end
end
end
before_update do
if self.parent_id_changed?
PProductSubCat.where(["position > ? and parent_id "+(self.changes['parent_id'][0] ? "=" : "IS")+" ?",self.position,self.changes['parent_id'][0]]).each do |portlet|
portlet.position = portlet.position - 1
portlet.save!
end
self.position = 1
PProductSubCat.where(["parent_id "+(self.parent_id ? "=" : "IS")+" ?",self.parent_id]).each do |portlet|
portlet.position = portlet.position + 1
portlet.save!
end
end
end
before_destroy do
PProductSubCat.where(["position > ? and parent_id "+(self.parent_id ? "=" : "IS")+" ?",self.position,self.parent_id]).each do |portlet|
portlet.position = portlet.position - 1
portlet.skip_before_update = true
portlet.save!
end
end
end