Class: Infold::ModelGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Defined in:
lib/generators/infold/model/model_generator.rb

Instance Method Summary collapse

Instance Method Details

#create_decorator_fileObject



41
42
43
44
45
46
# File 'lib/generators/infold/model/model_generator.rb', line 41

def create_decorator_file
  base_path = "#{@dist_path}/app/decorators/#{@ns_snake}"
  file_path = File.join(base_path, "#{@model.name.underscore}_decorator.rb")
  File.delete(file_path) if File.exist?(file_path)
  template "decorator.rb", file_path
end

#create_model_fileObject



34
35
36
37
38
39
# File 'lib/generators/infold/model/model_generator.rb', line 34

def create_model_file
  base_path = "#{@dist_path}/app/models/#{@ns_snake}"
  model_file_path = File.join(base_path, "#{@model.name.underscore}.rb")
  File.delete(model_file_path) if File.exist?(model_file_path)
  template "model.rb", model_file_path, encoding: :utf8
end

#setupObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/generators/infold/model/model_generator.rb', line 5

def setup
  raise '' if name.to_i == -1
  @model = Model.includes(
      :columns,
      :attachment_fields,
      :associations,
      :child_model_associations,
      :child_models,
      :parent_model_associations,
      :parent_models).
      find_by(id: name.to_i)
  raise "テーブルが見つかりません: #{name}" if @model.blank?
  @app = App.includes(
    app_view_index: [search_result_columns: :model_column,
                     search_conditions: :model_column],
    app_view_show:  [show_columns: :model_column,
                     show_associations: [show_association_columns: :model_column]],
    app_view_form:  [form_columns: :model_column,
                     form_associations: [form_association_columns: :model_column]],
    app_view_modal: [search_result_columns: :model_column,
                     search_conditions: :model_column]).find_by(model: @model)
  @model = ActiveDecorator::Decorator.instance.decorate(@model)
  @app = ActiveDecorator::Decorator.instance.decorate(@app)
  @dist_path = Rails.root
  ns = Project.first.namespace
  @ns_camel = ns.camelize
  @ns_snake = ns.underscore
end