Mad*_*han 9 ruby-on-rails ruby-on-rails-plugins ruby-on-rails-3
我只是尝试创建一个没有任何参数的插件迁移生成器,例如:$rails generate yaffle这应该将迁移文件(lib/generators/yaffle/template/create_yaffle.rb)复制到db/migrate/[timestamp] _create_yaffle.rb.
$rails generate yaffle它时,给我一条消息,表明没有提供参数,它希望采用这种格式rails generate yaffle NAME [options].我不想要任何选项/参数,它应该只是rails generate yaffle.我该怎么办?
我跟着acts_as_commentable中使用的生成器,它看起来很简单,但我不知道在哪里修改这些设置......有人可以帮忙吗?
发电机代码:
require 'rails/generators'
require 'rails/generators/migration'
class ThumbitGenerator Rails::Generators::NamedBase
source_root File.expand_path('../templates', __FILE__)
def self.next_migration_number(path)
Time.now.utc.strftime("%Y%m%d%H%M%S")
end
def create_model_file
template "like.rb", "app/models/like.rb"
template "liking.rb", "app/models/liking.rb"
template "create_likes.rb", "db/migrate/create_likes.rb"
template "create_likings.rb", "db/migrate/create_likings.rb"
end
end
Run Code Online (Sandbox Code Playgroud)
Mad*_*han 22
好的,我找到了答案......
Rails::Generators::NamedBase而不是Rails::Generators::Base在我的生成器文件中!当你使用NamedBase时,它总是希望传递一个参数(这是初始化程序的名称)template方法而不是migration_template因为迁移文件不会产生任何迁移号最后,这个工作!
require 'rails/generators'
require 'rails/generators/migration'
class ThumbitGenerator < Rails::Generators::Base
include Rails::Generators::Migration
source_root File.expand_path('../templates', __FILE__)
def self.next_migration_number(path)
Time.now.utc.strftime("%Y%m%d%H%M%S")
end
def create_model_file
template "like.rb", "app/models/like.rb"
template "liking.rb", "app/models/liking.rb"
migration_template "create_likes.rb", "db/migrate/create_likes.rb"
migration_template "create_likings.rb", "db/migrate/create_likings.rb"
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4112 次 |
| 最近记录: |