Class: TranslatableAr::Setup

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/railtie.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(dirname) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/railtie.rb', line 20

def self.next_migration_number(dirname)
  if ActiveRecord::Base.timestamped_migrations
    Time.now.utc.strftime("%Y%m%d%H%M%S")
  else
    "%.3d" % (current_migration_number(dirname) + 1)
  end
end

.source_rootObject



16
17
18
# File 'lib/railtie.rb', line 16

def self.source_root
  @source_root ||= File.join(File.dirname(__FILE__), 'templates')
end

Instance Method Details

#attributesObject



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/railtie.rb', line 43

def attributes
  attributes = []
  attribute_struct = Struct.new(:name, :model)
  TranslatableAR.models.each do |model|
    model.translatable_ar_attributes.each do |attribute|
      if model.columns_hash["#{attribute}_i18n"].nil?
        attributes << attribute_struct.new(attribute, model)
      end
    end
  end
  attributes
end

#create_migration_fileObject



28
29
30
31
32
33
# File 'lib/railtie.rb', line 28

def create_migration_file
  Rails.application.eager_load! # trigger translates method call in models
  time = Time.now.utc.strftime("%Y%m%d%H%M%S")

  migration_template 'setup.rb', "db/migrate/setup_translatable_ar_#{time}.rb"
end

#modelsObject



35
36
37
38
39
40
41
# File 'lib/railtie.rb', line 35

def models
  TranslatableAR.models.select do |model|
    model.translatable_ar_attributes.any? do |attribute|
      model.columns_hash["#{attribute}_i18n"].nil?
    end
  end
end