Rails控制台上的模型

时间:2014-10-21 20:14:18

标签: ruby ruby-on-rails-4

我在models文件夹下创建了一个简单的类,如下所示:

class CaffeineShops
 def initialize
 end
end

当我运行rails console并尝试CaffeineShops.new()时,我收到一条消息:" NoMethodError:未定义的方法' new' for CaffeineShops :: Module"

我正在使用Rails 4.1。

我为什么会收到这个错误?

1 个答案:

答案 0 :(得分:1)

您不能将模型命名为与应用程序本身相同的名称。当您运行rails g caffeine_shops时,会创建一个名为CaffeineShops的模块,该模块将为您的应用程序提供支持。

该模块用于许多文件,包括

  

设置\ application.rb中

     

设置\的environment.rb

     

设置\环境\ development.rb

     

设置\环境\ production.rb

     

设置\环境\ test.rb

     

设置\初始化\ secret_token.rb

     

设置\初始化\ session_store.rb

     

config \ routes.rb

     

config.ru *实际上在基于机架的服务器上启动应用程序

     

Rakefile *为应用程序加载rake任务

当您尝试使用相同的名称命名一个类时,它会在rails应用程序中创建歧义,因此您的代码假设您的意思是module CaffeineShops而不是class CaffeineShops

如果你真的使用一个发电机来定义这个模型,那么轨道会非常明显地存在问题。例如

rails g caffeine_shops
cd caffeine_shops
rails g model caffeine_shops 
#=>The name 'CaffeineShops' is either already used in your application or reserved
   by Ruby on Rails. Please choose an alternative and run this generator again.