如何使用自定义生成器生成迁移

时间:2020-08-16 14:35:58

标签: ruby-on-rails ruby activerecord migration thor

这是 lib / genrators / form

中的生成器类
class FormGenerator < Rails::Generators::Base
      source_root File.expand_path('templates', __FILE__)
      source_root File.expand_path('templates', __dir__)
      argument :model, type: :string
    
    def create_template
    
        template "models/form.template", "app/models/#{model}.rb"
        template "controllers/forms_controller.template", "app/controllers/#{model}s_controller.rb"
        template "javascript/api/form.template", "app/javascript/api/#{model}.js"
        template "javascript/pages/component/forms.template", "app/javascript/component/#{model}s.vue"
        template "javascript/pages/form/index.template", "app/javascript/pages/#{model}/index.vue"
        template "javascript/pages/form/layout.template", "app/javascript/pages/#{model}/layout.vue"
        template "javascript/store/actions/form.template", "app/javascript/store/actions/#{model}.js"
        template "javascript/store/getters/form.template", "app/javascript/store/getters/#{model}.js"
        template "javascript/store/modules/form.template", "app/javascript/store/modules/#{model}.js"
        template "javascript/store/mutations/form.template", "app/javascript/store/mutations/#{model}.js"
    
      end
    
    end

这是输出:

rails g form test name:string
create  app/models/test.rb
      create  app/controllers/tests_controller.rb
      create  app/javascript/api/test.js
      create  app/javascript/component/tests.vue
      create  app/javascript/pages/test/index.vue
      create  app/javascript/pages/test/layout.vue
      create  app/javascript/store/actions/test.js
      create  app/javascript/store/getters/test.js
      create  app/javascript/store/modules/test.js
      create  app/javascript/store/mutations/test.js
我想要这个生成器,生成db / migrate中的迁移文件 我已经尝试了这些东西,但没有成功:

class FormGenerator < Rails::Generators::Base
include Rails::Generators::Migration
include ActiveRecord::Generators::Base
migration_template 

0 个答案:

没有答案
相关问题