1

リソースを生成しようとしていますが、Active_recordへのすべての参照を削除し、databse.ymlファイルを削除しました。

Railsサーバーは正常に起動しますが、モデルを生成しようとすると、次のようになります。

rails g resource contact

次のエラーが発生します。

必要なオプションに値が提供されていません'--orm'

リソースを生成するときにデータベースを指定しない方法はありますか?

4

1 に答える 1

0

簡単な方法はありません。リソース ジェネレーターのソース コードを見ると、orm に関する次の部分が表示されます。

    # Loads the ORM::Generators::ActiveModel class. This class is responsible
    # to tell scaffold entities how to generate an specific method for the
    # ORM. Check Rails::Generators::ActiveModel for more information.
    def orm_class
      @orm_class ||= begin
        # Raise an error if the class_option :orm was not defined.
        unless self.class.class_options[:orm]
          raise "You need to have :orm as class option to invoke orm_class and orm_instance"
        end

        begin
          "#{options[:orm].to_s.camelize}::Generators::ActiveModel".constantize
        rescue NameError
          Rails::Generators::ActiveModel
        end
      end
    end

したがって、ORM なしでこのコマンドを実行しようとする試みは明示的に拒否され、ORM を指定すると、ORM::Generators::ActiveModel. 上部のコメントでは、詳細情報を見つける場所を指定しています ( Rails::Generators::ActiveModel ) 。上部のコメントは、それを拡張して ORM 仕様を作成する方法を説明しています。

Rails にデフォルトで組み込まれているのは ActiveRecord generatorだけです。

多くの一般的なライブラリのジェネレーターを含むrails3-generatorsと呼ばれる gem がありますが、ORMの場合data_mapper、 、mongo_mappermongoid、およびactive_model.

私の知る限り、「データベースなし」用の事前構築済みの ORM ジェネレーターはありません。必要に応じて、の上部にある指示に従ってRails::Generators::ActiveModel(rails3-generators必要な場合は gem ソースを参考にして)、自分で作成することもできます。

しかし、それが手間がかかりすぎると思われる場合は、組み込みの ActiveRecord ジェネレーターを使用して生成するように指示し、その ORM に関連して生成されたものを手動で変更/削除することをお勧めします。

于 2012-05-10T10:28:14.257 に答える