module Rails::Generators::ResourceHelpers
def self.included(base) # :nodoc:
:nodoc:
ActiveModel.
Deal with controller names on scaffold and add some helpers to deal with
def self.included(base) # :nodoc: base.include(Rails::Generators::ModelHelpers) base.class_option :model_name, type: :string, desc: "ModelName to be used" end
def assign_controller_names!(name)
def assign_controller_names!(name) @controller_name = name @controller_class_path = name.include?("/") ? name.split("/") : name.split("::") @controller_class_path.map!(&:underscore) @controller_file_name = @controller_class_path.pop end
def controller_class_name
def controller_class_name (controller_class_path + [controller_file_name]).map!(&:camelize).join("::") end
def controller_class_path
def controller_class_path if options[:model_name] @controller_class_path else class_path end end
def controller_file_path
def controller_file_path @controller_file_path ||= (controller_class_path + [controller_file_name]).join("/") end
def controller_i18n_scope
def controller_i18n_scope @controller_i18n_scope ||= controller_file_path.tr("/", ".") end
def initialize(*args) # :nodoc:
Set controller variables on initialization.
def initialize(*args) # :nodoc: super controller_name = name if options[:model_name] self.name = options[:model_name] assign_names!(name) end assign_controller_names!(controller_name.pluralize) end
def orm_class
to tell scaffold entities how to generate a specific method for the
Loads the ORM::Generators::ActiveModel class. This class is responsible
def orm_class @orm_class ||= begin # Raise an error if the class_option :orm was not defined. unless self.class.class_options[:orm] raise "You need to have :orm as class option to invoke orm_class and orm_instance" end begin "#{options[:orm].to_s.camelize}::Generators::ActiveModel".constantize rescue NameError Rails::Generators::ActiveModel end end end
def orm_instance(name = singular_table_name)
def orm_instance(name = singular_table_name) @orm_instance ||= orm_class.new(name) end