Sha256: 16ae193ee05fd8fb9d8aea04d65e50a9089358ead91f78e27ca109e3888abb01
Contents?: true
Size: 1.04 KB
Versions: 5
Compression:
Stored size: 1.04 KB
Contents
module Adminos::NestedSet::PlaceTo extend ActiveSupport::Concern def place_to(*args) options = args.extract_options! parent_id = args.first || options.delete(:parent_id) prev_id = args.second || options.delete(:prev_id) opts = { place_first: true }.merge(options) if parent_id.present? parent = self.class.find(parent_id) self.move_to_child_of(parent) else self.move_to_root end if prev_id.present? prev = self.class.find(prev_id) self.move_to_right_of(prev) else current_first = self.parent.present? ? self.parent.children.first : self.class.order('lft ASC').first if opts[:place_first] && ((self.parent.present? && self.parent.children.count > 1) || !self.parent.present?) self.move_to_left_of(current_first) end end self.reload run_callbacks(:save) end def move_children_to_parent! self.children.each do |child| child.place_to(self.parent, nil) child.set_published_off if child.respond_to?(:set_published_off) end end end
Version data entries
5 entries across 5 versions & 1 rubygems