Sha256: ea6524ce5f2664ce98afb0da2e8e93123809cd364aa8c3e81c8354e0e39505ae
Contents?: true
Size: 1.26 KB
Versions: 5
Compression:
Stored size: 1.26 KB
Contents
module Adminos::NestedSet::Duplication extend ActiveSupport::Concern # Метод клонирует объект. Добавляет в slug -сopy, т.к. он уникален # Далее объект сохранятеся в базе. Если объект в корне, то он туда и помещается # Иначе объект помещается в нужного родителя # Переопредели generated_slug в модели если хочешь свою логику def duplication cloned = self.dup cloned.slug = generated_slug if cloned.respond_to?('slug=') cloned.published = false if cloned.respond_to?('published=') cloned.translations = self.translations.map(&:dup) if cloned.respond_to?('translations') cloned.save self.parent.children << cloned unless self.root? end private def generated_slug prefix = if self.respond_to?(:translations) self.class.with_translated_attribute(:name, reasonable_name, I18n.available_locales).size else self.class.where(name: reasonable_name).size end base_slug = self.class.find_by(slug: reasonable_name.parameterize).try(:slug) base_slug.present? ? base_slug + prefix.to_s : reasonable_name.parameterize end end
Version data entries
5 entries across 5 versions & 1 rubygems