Sha256: 70907a2886e061344bf6d12ee7c705c13a4ec35d4e5e192b07801309d2e1c8cf
Contents?: true
Size: 1002 Bytes
Versions: 7
Compression:
Stored size: 1002 Bytes
Contents
module Comfy::Cms::WithCategories extend ActiveSupport::Concern included do has_many :categorizations, as: :categorized, class_name: "Comfy::Cms::Categorization", dependent: :destroy has_many :categories, through: :categorizations, class_name: "Comfy::Cms::Category" attr_accessor :category_ids after_save :sync_categories scope :for_category, ->(*categories) { if (categories = [categories].flatten.compact).present? distinct .joins(categorizations: :category) .where("comfy_cms_categories.label" => categories) end } end def sync_categories (category_ids || {}).each do |category_id, flag| case flag.to_i when 1 if (category = Comfy::Cms::Category.find_by_id(category_id)) category.categorizations.create(categorized: self) end when 0 categorizations.where(category_id: category_id).destroy_all end end end end
Version data entries
7 entries across 7 versions & 1 rubygems