Ruby on rails Rails3控制器复数/单数路由

Ruby on rails Rails3控制器复数/单数路由,ruby-on-rails,ruby,Ruby On Rails,Ruby,我的rails3应用程序中名为nas的控制器存在一些问题 我的ruby应用程序连接到现有数据库,因此表名必须保持为nas 在我的模型中,我以前能够做到这一点: set_table_name 但我不知道如何在我的控制器/路由中执行此操作 现在,我的路线包含以下内容: resources :nas 输出为: new_na GET /nas/new(.:format) {:action=>"new", :controller=>"nas

我的rails3应用程序中名为nas的控制器存在一些问题

我的ruby应用程序连接到现有数据库,因此表名必须保持为nas

在我的模型中,我以前能够做到这一点:

set_table_name
但我不知道如何在我的控制器/路由中执行此操作

现在,我的路线包含以下内容:

resources :nas
输出为:

        new_na GET    /nas/new(.:format)               {:action=>"new", :controller=>"nas"}
       edit_na GET    /nas/:id/edit(.:format)          {:action=>"edit", :controller=>"nas"}
            na GET    /nas/:id(.:format)               {:action=>"show", :controller=>"nas"}
               PUT    /nas/:id(.:format)               {:action=>"update", :controller=>"nas"}
               DELETE /nas/:id(.:format)               {:action=>"destroy", :controller=>"nas"}
如您所见,rails会删除“s”

我如何解决这个问题


感谢您的光临。请尝试

match '/nas', :to => 'na'

猜测一下,也许你应该尝试覆盖命名约定,因为“nas”不是复数?(假设这就是s下降的原因)

environment.rb中

编辑:而不是使用
environment.rb
使用:
config/initializers/definctions.rb
(谢谢)

我的ruby应用程序连接到现有数据库,因此表名必须保持为nas

那么,为什么您的路线/控制器也必须命名为
nas
?一旦你在你的模型级别上修复了它,一切都会好起来的

# model.rb
class WhateverILikeToCallMyModel
  set_table_name "nas"
end

# controller.rb
class WaynesController << ApplicationController
  # ...

  def index
    @items = WhateverILikeToCallMyModel.all
  end
end

# routes.rb
resources :waynes
#model.rb
类WhateverILikeToCallMyModel
设置表格名称“nas”
结束
#controller.rb

类WaynesController它非常混乱,因为我不知道“na”或“nas”是什么。从你的问题我有一个想法,你总是想把它称为“nas”,包括复数和单数

如果是这样的话,那么答案就是把它放在
config/initializers/democtions.rb中:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable "nas"
end
这也将使您的
Nas
机型默认使用
Nas
表,因此无需
set\u table\u name


但是请注意,如果您不想,没有理由对控制器使用
Nas
!您可以随意命名它们,只要这反映在
routes.rb中,并且您在控制器中使用了正确的模型。

是否无法保留s?好的,您可以尝试这样做,但请注意对其他表的影响。ActiveRecord::Base.pluralize\u table\u names=false我更喜欢将我的词形变化放在
config/initializers/definctions.rb
中。你也可以把它当作一个不可数的词:
influct.uncountable“nas”
。非常感谢。这也是我为我的几个名为“牲畜”和“设备”的课程所做的,这两个课程无论是复数还是单数都拼写相同(不需要“s”)。如果有人想看到将这一行添加到influctions.rb的效果,请运行一个假脚手架,例如
rails g scaffold equipment-p
-p
允许您预览文件及其名称,而无需实际创建它们。您可以看到添加或注释掉拐点.uncountable行后文件名的变化。令人惊叹的。
ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable "nas"
end