ruby-on-rails - Rails 引擎,调用容器应用的原生迁移生成器

标签 ruby-on-rails migration generator

SO 上的其他人已经询问(并已回答)如何编写迁移模板,该模板将像任何其他模板一样复制到容器应用程序。我们正在编写一个需要在多个主要版本的 Rails 中工作的 Rails 引擎,所以我们希望找到一种方法来使用应用程序的原生迁移生成器来生成迁移,而不是必须维护多个模板,或者需要编写一个可以处理多个主要版本的复杂模板。

我在the Rails engine documentation看到过(9.12) 你可以像这样调用其他生成器:

generate "scaffold", "forums title:string description:text"

其中生成器的名称及其参数是单个字符串。但是,以下对我们不起作用:
generate 'migration', 'create_table_name column1:type ...'

对于我们来说,无论 Rails 版本如何,都会创建一个具有正确名称但为空的迁移文件 updown (或 change)方法。所以就好像本地迁移生成器实际上只接收第一个参数一样。

实际上有没有办法做到这一点?

最佳答案

通过使用 Camel 案例生成语法,这对我来说很好用:
lib/generators/test_generator.rb

class TestGenerator < Rails::Generators::Base                                  
  def build_table                                                              
    generate 'migration', 'CreateFoo name:string'                              
  end                                                                          
end
rails g test创建迁移:
db/migrate/20170128040004_create_foo.rb
class CreateFoo < ActiveRecord::Migration[5.0]                                    
  def change                                                                      
    create_table :foos do |t|                                                     
      t.string :name                                                              
    end                                                                           
  end                                                                             
end  

所以我认为你只需要使用语法 CreateTableName而不是 create_table_name .

关于ruby-on-rails - Rails 引擎,调用容器应用的原生迁移生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41728556/

相关文章:

ruby-on-rails - Rails 中的手动请求调度

ruby-on-rails - Link_to block 内的 Rails 简单 anchor

authentication - 玩框架 1.2.4 迁移?做什么最好?

ios6 - 自动滑动在 iOS 6 模拟器上有效,但在 iOS 7 上不起作用

类中的python生成器

mysql - Rails 查询 [types, ids] 列表中具有 has_many 关系

ruby-on-rails - 将当前路径与 capybara 和 rspec 进行比较时出错

ruby-on-rails - Rails/postgresql 将数据从数据库迁移到新创建的数据库

javascript - 在没有变量声明的情况下使用异步迭代

python - 发电机可以多次使用吗?