class Lexoranking::Generators::InstallGenerator

Constants

RANKING_COLUMN

Attributes

column[R]
model_name[R]

Public Class Methods

next_migration_number(path) click to toggle source
# File lib/generators/lexoranking/install_generator.rb, line 10
def self.next_migration_number(path)
  next_migration_number = current_migration_number(path) + 1
  ActiveRecord::Migration.next_migration_number(next_migration_number)
end

Public Instance Methods

copy_migrations() click to toggle source
# File lib/generators/lexoranking/install_generator.rb, line 19
def copy_migrations
  validates_ranking_column!

  migration_template "migration.rb", "db/migrate/add_#{column}_to_#{model_name}.rb"
end
setup() click to toggle source
# File lib/generators/lexoranking/install_generator.rb, line 15
def setup
  @model_name = options.model.pluralize
end

Private Instance Methods

_raise_model_do_not_exists() click to toggle source
# File lib/generators/lexoranking/install_generator.rb, line 43
def _raise_model_do_not_exists
  raise ::Lexoranking::ModelDoNotExists.new(
    "The model #{model_name.classify} do not exists",
    self
  )
end
load_ranking_column(model) click to toggle source
# File lib/generators/lexoranking/install_generator.rb, line 39
def load_ranking_column(model)
  model.ranking_column if model.respond_to? :ranking_column
end
model_exists!() click to toggle source
# File lib/generators/lexoranking/install_generator.rb, line 35
def model_exists!
  ActiveRecord::Base.connection.tables.map(&:classify).include?(model_name.classify)
end
validates_ranking_column!() click to toggle source
# File lib/generators/lexoranking/install_generator.rb, line 29
def validates_ranking_column!
  model_exists! || _raise_model_do_not_exists

  @column = load_ranking_column(model_name.classify.constantize) || RANKING_COLUMN
end