2011-06-09 65 views
4

我遇到了为赛船会生成脚手架的问题。当我运行Rails 3拐点问题

rails g scaffold Regatta name:string start_date:datetime 

我得到一个型号命名regattum和控制器称为regatta_controller(而不是regattas_controller)

invoke active_record 
    create db/migrate/20110609221608_create_regatta.rb 
    create app/models/regattum.rb 
    invoke test_unit 
    create  test/unit/regattum_test.rb 
    create  test/fixtures/regatta.yml 
    route resources :regatta 
    invoke scaffold_controller 
    create app/controllers/regatta_controller.rb 
    invoke erb 
    create  app/views/regatta 
    create  app/views/regatta/index.html.erb 
    create  app/views/regatta/edit.html.erb 
    create  app/views/regatta/show.html.erb 
    create  app/views/regatta/new.html.erb 
    create  app/views/regatta/_form.html.erb 
    invoke test_unit 
    create  test/functional/regatta_controller_test.rb 
    invoke helper 
    create  app/helpers/regatta_helper.rb 
    invoke  test_unit 
    create  test/unit/helpers/regatta_helper_test.rb 
    invoke stylesheets 

相同的公共/样式表/ scaffold.css

显然这是一个拐点问题,但每当我修改/config/initializers/inflections.rb我得到一个错误说:

The name 'Regatta' is either already used in your application or reserved by Ruby on Rails. Please choose an alternative and run this generator again. 

我已经尝试了所有我能想到的工作,但我不断收到错误。任何有关解决方案或解决方法的建议都将不胜感激!


更新

这里有一些我已经试过的东西:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'regatta', 'regattas' 
end 

,所以我尝试了一些下面的选项,其中包括这并没有改变什么,在不同组合中无效:

inflect.plural 'regatta', 'regattas' 
    inflect.singular 'regattas', 'regatta' 
    inflect.singular 'regatta', 'regatta' 

更新2

下面是我是inflections.rb使用一次我想出的代码我在做什么错:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.plural 'regatta', 'regattas' 
    inflect.singular 'regatta', 'regatta' 
    inflect.singular 'regattas', 'regatta' 
end 

希望这将帮助别人的未来!

+0

你如何修改文件? – 2011-06-09 22:38:57

回答

1

鉴于错误消息说Regatta已经在您的应用程序中使用(显然不是由Rails保留),我猜Regattum模型仍然存在。

我建议销毁脚手架并再试一次。听起来好像,一旦在应用程序中定义了一个单词,Rails就有了一个内置的保护来防止改变变形。所以,抛出这个错误是为了防止在这种情况下的意外行为。

+0

我摧毁了脚手架 - 所以没有模型,控制器或视图 - 仍然没有运气与偏折器。我也从来没有'rake db:migrate',所以也没有数据库表。我把头发拉过来。 – akpb 2011-06-09 23:14:55

+5

你说得对。我打电话给我的应用程序赛,这显然是抛弃它。感谢您指点我正确的方向! – akpb 2011-06-09 23:40:18

9

我认识到这篇文章已经过时了,但我还是认为我会贡献我的发现。

经过很长时间的发展,我一直在将rpsec和黄瓜整合到我的应用程序中(是的;淘气的,淘气的)。我想为我的模型生成rspec存根,并测试我的应用程序单元。我通常可以将关联的迁移移出db/migrate /并运行'bundle exec rails g'来重新生成脚手架,在本例中为rspec存根。这次不行。

<终端>

bundle exec rails g scaffold User email:string ... 
     updated_at:datetime roles_mask:integer --trace 

     invoke active_record 

The name 'User' is either already used in your application 
     or reserved by Ruby on Rails. Please choose an alternative 
     and run this generator again. 

我的问题是在我的“配置/航线暂时注释掉 'devise_for' 行解决。RB”文件

的config/routes.rb中

#devise_for :users 

宾果。这并不是唯一一次让Devise让我感到吃惊的“黑魔法”,这一点并不明显。当然,一旦我的rspec存根被生成,我就不会评论该行。现在开始写单元测试了!

+0

为我工作!谢谢。 – Zeeshan 2013-12-22 22:51:15

+0

两年多后,仍然相关。这也帮助了我,谢谢。 – Steve 2014-11-29 06:05:06