Ruby on rails RubyonRails:如何检查模型是否存在

Ruby on rails RubyonRails:如何检查模型是否存在,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,我想知道如何检查模型是否已经存在于项目中 当用户试图以编程方式使用相同的模型名称创建模型时,是否需要检查它是否已经存在?已定义?如果定义了模型,ModelName将返回“constant”。因为定义了,是有问题的(请参见@jiggneshGohel的评论),也许您可以检查models目录中的文件名 files = Dir[Rails.root + 'app/models/*.rb'] models = files.map{ |m| File.basename(m, '.rb').camelize

我想知道如何检查模型是否已经存在于项目中


当用户试图以编程方式使用相同的模型名称创建模型时,是否需要检查它是否已经存在?

已定义?如果定义了模型,ModelName
将返回“constant”。

因为定义了
是有问题的(请参见@jiggneshGohel的评论),也许您可以检查
models
目录中的文件名

files = Dir[Rails.root + 'app/models/*.rb']
models = files.map{ |m| File.basename(m, '.rb').camelize }

models.include? "User" => true
另一个选择是使用


如果模型中没有列,则返回false。

已定义?
似乎不会返回一致的结果。请检查以下代码:`$rails c Loading development environment(rails 4.2.0)2.2.1:001>已定义?(用户)=>“常量”2.2.1:002>已定义?(AuthenticationToken)=>nil 2.2.1:003>AuthenticationToken=>AuthenticationToken(调用“AuthenticationToken.connection”建立连接)2.2.1:004>已定义?(AuthenticationToken)=>“constant”2.2.1:005>`Agree^有些常量似乎只有在引用后才加载?这里有一个链接,指向有关定义的
运算符的更多信息。
运算符: