class ModelMill::Generators::ModelsGenerator
Public Instance Methods
generate_models()
click to toggle source
argument :excludes, :type => :array, :required => false, :default => []
# File lib/generators/model_mill/models/models_generator.rb, line 9 def generate_models if options[:namespace] empty_directory("app/models/#{options[:namespace].downcase}") generate_base_namespaced_model end discovered_tables.each do |table_name| @model_name = model_name_from_table_name table_name @model_file_name = model_file_name_from_table_name table_name @columns = connection.columns(table_name) @indexes = connection.indexes(table_name) @associations = detected_associations(table_name, @columns) template 'model.rb', "app/models/#{options[:namespace] ? options[:namespace]+'/' : ''}#{@model_file_name}.rb" end puts %Q(config.autoload_paths += %W(\#{config.root}/app/models/#{options[:namespace].downcase})) if options[:namespace] end
Private Instance Methods
connection()
click to toggle source
# File lib/generators/model_mill/models/models_generator.rb, line 26 def connection @conn ||= options[:namespace] ? Kernel.const_get(options[:namespace].camelize)::Base.connection : ActiveRecord::Base.connection end
connection_info()
click to toggle source
# File lib/generators/model_mill/models/models_generator.rb, line 30 def connection_info YAML.load(ERB.new(File.read(File.expand_path(File.join("config","database.yml")))))[options[:namespace].downcase] end
detected_associations(table_name, columns)
click to toggle source
# File lib/generators/model_mill/models/models_generator.rb, line 50 def detected_associations(table_name, columns) {:belongs_to => [], :has_many => []}.tap do |associations| columns.each do |col| associations[:belongs_to].push({:name => $1}) if col.name =~ /(.*)\_id$/ end discovered_tables.each do |tn| next if tn == table_name connection.columns(tn).each do |col| associations[:has_many].push({:name => tn}) if col.name =~ /#{table_name.singularize}\_id$/ end end end end
discovered_tables()
click to toggle source
# File lib/generators/model_mill/models/models_generator.rb, line 38 def discovered_tables connection.tables.sort end
generate_base_namespaced_model()
click to toggle source
# File lib/generators/model_mill/models/models_generator.rb, line 34 def generate_base_namespaced_model template 'base.rb', "app/models/#{options[:namespace]}/base.rb" end
model_file_name_from_table_name(tn)
click to toggle source
# File lib/generators/model_mill/models/models_generator.rb, line 46 def model_file_name_from_table_name tn tn.singularize.underscore end
model_name_from_table_name(tn)
click to toggle source
# File lib/generators/model_mill/models/models_generator.rb, line 42 def model_name_from_table_name tn tn.singularize.camelize end