Class: ActiveRecord::Generators::ModelGenerator
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
|
|
Instance Chain:
self,
Base ,
Migration ,
::Rails::Generators::Migration ,
::Rails::Generators::NamedBase ,
::Rails::Generators::Base ,
::Rails::Generators::Actions ,
Thor::Actions,
Thor::Group
|
|
Inherits: |
ActiveRecord::Generators::Base
|
Defined in: | activerecord/lib/rails/generators/active_record/model/model_generator.rb |
Class Attribute Summary
::Rails::Generators::Base
- Inherited
Class Method Summary
Base
- Inherited
.base_root | Set the current directory as base for the inherited generators. |
::Rails::Generators::NamedBase
- Inherited
.check_class_collision | Add a class collisions name to be checked on class initialization. |
.new |
::Rails::Generators::Base
- Inherited
.base_root | Returns the base root for a common set of generators. |
.default_source_root | Returns the default source root for a given generator. |
.desc | Tries to get the description from a USAGE file one folder above the source root otherwise uses a default description. |
.hide! | Convenience method to hide this generator from the available ones when running rails generator command. |
.hook_for | Invoke a generator based on the value supplied by the user to the given option named “name”. |
.namespace | Convenience method to get the namespace from the class name. |
.remove_hook_for | Remove a previously added hook. |
.source_root | Returns the source root for this generator using default_source_root as default. |
.add_shebang_option! | Small macro to add ruby as an option to the generator with proper default value plus an instance helper method called shebang. |
.banner | Use Rails default banner. |
.base_name | Sets the base_name taking into account the current class namespace. |
.default_aliases_for_option | Returns default aliases for the option name given doing a lookup in Rails::Generators.aliases. |
.default_for_option | Returns default for the option name given doing a lookup in config. |
.default_generator_root, | |
.default_value_for_option | Returns the default value for the option name given doing a lookup in Rails::Generators.options. |
.generator_name | Removes the namespaces and get the generator name. |
.usage_path, | |
.class_option | Make class option aware of Rails::Generators.options and Rails::Generators.aliases. |
.inherited | Cache source root and add lib/generators/base/generator/templates to source paths. |
.hooks | Keep hooks configuration that are used on prepare_for_invocation. |
.prepare_for_invocation | Prepare class invocation to search on |
Instance Attribute Summary
- #custom_parent? ⇒ Boolean readonly private
-
#skip_migration_creation? ⇒ Boolean
readonly
private
Skip creating migration file if:
::Rails::Generators::Migration
- Included
::Rails::Generators::NamedBase
- Inherited
#file_name, #inside_template, #inside_template?, #mountable_engine?, #pluralize_table_names?, #uncountable? |
::Rails::Generators::Base
- Inherited
Instance Method Summary
-
#create_migration_file
creates the migration file for the model.
- #create_model_file
- #create_module_file
- #abstract_class_name private
- #attributes_with_index private
- #database private
- #generate_abstract_class private
- #migration private
- #parent private
-
#parent_class_name
private
Used by the migration template to determine the parent name of the model.
Migration
- Included
#configured_migrate_path, #db_migrate_path, #default_migrate_path, #foreign_key_type, #primary_key_type |
::Rails::Generators::Migration
- Included
#create_migration, | |
#migration_template | Creates a migration template at the given destination. |
#set_migration_assigns! |
::Rails::Generators::NamedBase
- Inherited
#application_name | Tries to retrieve the application name or simply return application. |
#assign_names!, #attributes_names, #class_name, #class_path, #edit_helper, #file_path, #fixture_file_name, #human_name, #i18n_scope, #index_helper, #model_resource_name, #namespaced_class_path, #new_helper, | |
#parse_attributes! | Convert attributes array into GeneratedAttribute objects. |
#plural_file_name, #plural_name, #plural_route_name, #plural_table_name, #redirect_resource_name, #regular_class_path, #route_url, #show_helper, | |
#singular_name | FIXME: We are avoiding to use alias because a bug on thor that make this method public and add it to the task list. |
#singular_route_name, #singular_table_name, #table_name, #url_helper_prefix |
::Rails::Generators::Base
- Inherited
#class_collisions | Check whether the given class names are already taken by user application or Ruby on |
#extract_last_module | Takes in an array of nested modules and extracts the last module. |
#indent, | |
#module_namespacing | Wrap block with namespace of current application if namespace exists and is not skipped. |
#namespace, #namespace_dirs, #namespaced_path, #wrap_with_namespace |
::Rails::Generators::Actions
- Included
#add_source | Add the given source to |
#application | Alias for Rails::Generators::Actions#environment. |
#environment | Adds configuration code to a Rails runtime environment. |
#gem | Adds a |
#gem_group | Wraps gem entries inside a group. |
#generate | Runs another generator. |
#git | Runs one or more git commands. |
#github, | |
#initializer | Creates an initializer file in |
#lib | Creates a file in |
#rails_command | Runs the specified Rails command. |
#rake | Runs the specified Rake task. |
#rakefile | Creates a Rake tasks file in |
#readme | Reads the given file at the source root and prints it in the console. |
#route | Make an entry in Rails routing file |
#vendor | Creates a file in |
#append_file_with_newline | Append string to a file with a newline if necessary. |
#execute_command | Runs the supplied command using either “rake …” or “rails …” based on the executor parameter provided. |
#indentation | Indent the |
#log | Define log for backwards compatibility. |
#match_file, | |
#optimize_indentation | Returns optimized string with indentation. |
#quote | Always returns value in double quotes. |
#rebase_indentation | |
#route_namespace_pattern, | |
#with_indentation | Manage |
#initialize |
Constructor Details
This class inherits a constructor from Rails::Generators::NamedBase
Instance Attribute Details
#custom_parent? ⇒ Boolean
(readonly, private)
[ GitHub ]
#skip_migration_creation? ⇒ Boolean
(readonly, private)
# File 'activerecord/lib/rails/generators/active_record/model/model_generator.rb', line 47
def skip_migration_creation? custom_parent? && !database || !migration end
Instance Method Details
#abstract_class_name (private)
[ GitHub ]# File 'activerecord/lib/rails/generators/active_record/model/model_generator.rb', line 73
def abstract_class_name "#{database.camelize}Record" end
#attributes_with_index (private)
[ GitHub ]# File 'activerecord/lib/rails/generators/active_record/model/model_generator.rb', line 51
def attributes_with_index attributes.select { |a| !a.reference? && a.has_index? } end
#create_migration_file
creates the migration file for the model.
# File 'activerecord/lib/rails/generators/active_record/model/model_generator.rb', line 25
def create_migration_file return if skip_migration_creation? attributes.each { |a| a. .delete(:index) if a.reference? && !a.has_index? } if [:indexes] == false migration_template "create_table_migration.rb", File.join(db_migrate_path, "create_#{table_name}.rb") end
#create_model_file
[ GitHub ]# File 'activerecord/lib/rails/generators/active_record/model/model_generator.rb', line 31
def create_model_file generate_abstract_class if database && !custom_parent? template "model.rb", File.join("app/models", class_path, "#{file_name}.rb") end
#create_module_file
[ GitHub ]# File 'activerecord/lib/rails/generators/active_record/model/model_generator.rb', line 36
def create_module_file return if regular_class_path.empty? template "module.rb", File.join("app/models", "#{class_path.join('/')}.rb") if behavior == :invoke end
#database (private)
[ GitHub ]# File 'activerecord/lib/rails/generators/active_record/model/model_generator.rb', line 77
def database [:database] end
#generate_abstract_class (private)
[ GitHub ]#migration (private)
[ GitHub ]# File 'activerecord/lib/rails/generators/active_record/model/model_generator.rb', line 89
def migration [:migration] end
#parent (private)
[ GitHub ]# File 'activerecord/lib/rails/generators/active_record/model/model_generator.rb', line 81
def parent [:parent] end
#parent_class_name (private)
Used by the migration template to determine the parent name of the model
# File 'activerecord/lib/rails/generators/active_record/model/model_generator.rb', line 56
def parent_class_name if custom_parent? parent elsif database abstract_class_name else parent end end