2017-01-18 41 views
7

Những người khác trên SO đã yêu cầu (và được trả lời) về cách viết mẫu di chuyển sẽ được sao chép vào ứng dụng vùng chứa giống như bất kỳ mẫu nào khác. Chúng tôi đang viết một công cụ Rails cần làm việc trong nhiều phiên bản chính của Rails, vì vậy, chúng tôi hy vọng sẽ tìm cách sử dụng trình tạo di chuyển gốc của ứng dụng để tạo di chuyển, thay vì phải duy trì nhiều mẫu hoặc cần viết một mẫu phức tạp có thể xử lý nhiều phiên bản chính.Rails engine, gọi trình tạo di trú tự nhiên của ứng dụng vùng chứa

tôi đã thấy trong the Rails engine documentation (9,12) mà bạn có thể gọi máy phát điện khác như vậy:

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

nơi tên của máy phát điện, và đối số của nó, là chuỗi duy nhất. Tuy nhiên, sau đây không làm việc cho chúng tôi:

generate 'migration', 'create_table_name column1:type ...' 

Đối với chúng tôi, bất kể phiên bản Rails, một file chuyển đổi được tạo ra với tên riêng, nhưng trống rỗng updown (hoặc change) phương pháp. Vì vậy, nó như thể chỉ có các đối số đầu tiên thực sự được nhận bởi các máy phát điện di cư bản địa.

Thực ra có cách nào để thực hiện việc này không?

Trả lời

3

này làm việc tốt cho tôi bằng cách sử dụng các trường hợp lạc đà tạo ra cú pháp:

lib/generators/test_generator.rb

class TestGenerator < Rails::Generators::Base         
    def build_table                
    generate 'migration', 'CreateFoo name:string'        
    end                   
end 

rails g test tạo sự di cư:

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 

Vì vậy, tôi nghĩ rằng bạn chỉ cần để sử dụng cú pháp CreateTableName và không sử dụng create_table_name.

Các vấn đề liên quan