現在、独立したジェネレーターを作成しています。を実行するrails g query
と、動作し、ファイルが適切に作成されます。
ここでそのコード:
# lib/generators/rails/query_generator.rb
require_relative '../my_lib/named_base'
module Rails
module Generators
class QueryGenerator < MyLib::Generators::NamedBase
source_root File.expand_path('templates', __dir__)
check_class_collision suffix: 'Query'
def create_model_query
return if class_name.blank?
template_file = File.join('app/queries', class_path, "#{file_name}_query.rb")
template 'query.rb.erb', template_file
end
end
end
end
今、人が走っているときにジェネレーターを実行したいのですが、rails g model
達成できません。ジェネレーター モデル クラスをオーバーライドし、hook_for
それを呼び出すために a を使用しようとしましたが、機能しません。ここにコード:
# lib/generators/rails/model_generator.rb
require "rails/generators"
require "rails/generators/rails/model/model_generator"
require_relative './query_generator'
module Rails
module Generators
class ModelGenerator < ::Rails::Generators::ModelGenerator
hook_for :orm, as: :model, in: :rails do |instance, model|
instance.invoke Rails::Generators::QueryGenerator, [ instance.name ]
end
end
end
end
あなたが私を助けてくれることを願っています。ありがとう!