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 生成器

有一个名为rails3-generators的 gem ,其中包含许多通用库的生成器,但您可以看到,对于 ORM,它只为data_mappermongo_mappermongoidactive_model.

据我所知,“无数据库”没有预先构建的 ORM 生成器。如果需要,您可以自己编写一个,按照顶部的说明Rails::Generators::ActiveModel(并使用rails3-generatorsgem 源作为您需要它的参考)。

但如果这看起来太费力了,我建议只告诉它使用内置的 ActiveRecord 生成器生成,然后手动修改/删除它生成的与该 ORM 相关的任何内容。

于 2012-05-10T10:28:14.257 回答