我正在尝试生成资源,并且已删除对 Active_record 的所有引用并删除了 databse.yml 文件。
rails 服务器启动正常,但是当我尝试生成模型时:
rails g resource contact
我收到以下错误:
未为必需选项“--orm”提供值
有没有办法在生成资源时不指定数据库?
我正在尝试生成资源,并且已删除对 Active_record 的所有引用并删除了 databse.yml 文件。
rails 服务器启动正常,但是当我尝试生成模型时:
rails g resource contact
我收到以下错误:
未为必需选项“--orm”提供值
有没有办法在生成资源时不指定数据库?
没有简单的方法,不。如果您查看资源生成器的源代码,您将看到有关 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_mapper
、mongo_mapper
、mongoid
和active_model
.
据我所知,“无数据库”没有预先构建的 ORM 生成器。如果需要,您可以自己编写一个,按照顶部的说明Rails::Generators::ActiveModel
(并使用rails3-generators
gem 源作为您需要它的参考)。
但如果这看起来太费力了,我建议只告诉它使用内置的 ActiveRecord 生成器生成,然后手动修改/删除它生成的与该 ORM 相关的任何内容。