pdfshop/app/models/category.rb

69 lines
1.6 KiB
Ruby

# == Schema Information
#
# Table name: categories
#
# id :integer not null, primary key
# parent_id :integer default(0), not null
# level_depth :integer default(0), not null
# name :string(255) not null
# slug :string(255) not null
# active :boolean default(TRUE), not null
# created_at :datetime
# created_by :bigint(8)
# updated_at :datetime
# updated_by :bigint(8)
#
# Categories
class Category < ApplicationRecord
extend FriendlyId
extend ActsAsTree::TreeWalker
include FriendlyFinder
acts_as_tree order: 'name'
friendly_id :name, use: :slugged
has_and_belongs_to_many :products
has_one :image, as: :imageable, dependent: :destroy
validates :name, presence: true
after_update :a_update
def should_generate_new_friendly_id?
slug.blank? || will_save_change_to_attribute?(:name)
end
def created_name
Admin.find(updated_by).description
end
def created_date
updated_at.to_date
end
def active_products
products.where('active = 1').order('name ASC')
end
def active_childrens
Category.where(parent_id: id, active: true).order('name ASC')
end
def a_update
return unless saved_change_to_attribute?(:slug)
# preprocess images
image.change_filename(attribute_before_last_save(:slug), slug)
end
# returns image of category, if category don't have own image returns first
# product cover image
def cover_image
im = image
if im.blank?
pr = active_products.first
im = pr.cover_image unless pr.blank?
end
im
end
end