Skip to Content Skip to Search
Methods
F
R

Instance Public methods

folderable(**options)

# File app/models/concerns/folderable.rb, line 5
def folderable(**options)
  cattr_accessor :remove_to_above, :remove_to_below

  scope :foldered, -> { joins(:folder) }
  scope :unfoldered, -> { where(folder_id: nil) }

  belongs_to :folder, optional: true, touch: true

  options[:remove_to] ||= {}
  self.remove_to_above = options[:remove_to][:above] || ->(s) { s }
  self.remove_to_below = options[:remove_to][:below] || ->(s) { s }
end

remove_from_folder(id:, site:)

# File app/models/concerns/folderable.rb, line 18
def remove_from_folder(id:, site:)
  id = Array(id)

  where(id:, site:).update_all(folder_id: nil)

  extending(Sortable).move_to_bottom(
    id:,
    site:,
    below: ->(s) { remove_to_below.call(s.unfoldered) },
    above: ->(s) { remove_to_above.call(s.unfoldered) }
  )
end