Sha256: 6e0f671578e65541e2d4176f4a4ce30229e2987d0e6bab94535c1b83f925b6f0

Contents?: true

Size: 990 Bytes

Versions: 7

Compression:

Stored size: 990 Bytes

Contents

require 'yaml'

class UpgradeFromAlchemyFerret < ActiveRecord::Migration
  def up
    not_searchable_elements.each do |element|
      element['contents'].each do |content|
        next unless Alchemy::PgSearch.is_searchable_essence?(content)
        next if content['searchable'].nil?
        "Alchemy::#{content['type'].classify}".constantize
          .joins(content: :element)
          .where(alchemy_contents: {name: content['name']})
          .where(alchemy_elements: {name: element['name']})
          .update_all(searchable: false)
        say "Sets searchable to false for `#{content['name']}` contents of `#{element['name']}` elements."
      end
    end
  end

  private

  def elements_yml
    @elements_yml ||= YAML.load_file Rails.root.join('config/alchemy/elements.yml')
  end

  def not_searchable_elements
    elements_yml.select do |element|
      next if !element['contents']
      element['contents'].any? { |content| content['searchable'] == false }
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
alchemy-pg_search-3.0.0 lib/generators/alchemy/pg_search/upgrade/templates/migration.rb.tt
alchemy-pg_search-2.4.0 lib/generators/alchemy/pg_search/upgrade/templates/migration.rb.tt
alchemy-pg_search-2.3.0 lib/generators/alchemy/pg_search/upgrade/templates/migration.rb.tt
alchemy-pg_search-2.2.0 lib/generators/alchemy/pg_search/upgrade/templates/migration.rb.tt
alchemy-pg_search-2.1.0 lib/generators/alchemy/pg_search/upgrade/templates/migration.rb.tt
alchemy-pg_search-2.0.0 lib/generators/alchemy/pg_search/upgrade/templates/migration.rb.tt
alchemy-pg_search-1.2.0 lib/generators/alchemy/pg_search/upgrade/templates/migration.rb.tt