我在我的ruby on rails项目中使用STI,我正在尝试为控制器创建测试。
示例:
class Animal
end
class Lion < Animal
end
具体是我试图完全禁用Animal路由(索引除外),所以我只能使用指定类型的路由。 Lion对象路由指向指定类型的Animal控制器。
在运行时它可以工作,但测试它不会:如果我创建一个lion_controller_test,它会告诉我lion_controller_test不存在。
如果我尝试在animal_controller_test上执行此操作,它会告诉我路径不会退出(尽管使用已配置类型的fixture对象)。
我该怎么做:
get :show, id: @my_lion.id
并检测到正确的STI路线?
另外,我是否应该禁用所有&#34;通用动物路线&#34;除了索引?对STI这样做是否更安全?
由于
编辑:
路线:
resources :animals, only: [:index] ( only index, i dont want resources create/edit/show/destroy without specifing type )
resources :lions, controller: 'animal', type: 'Lion'
测试(测试单元导轨)
测试/控制器/ animals_controller_test.rb
如果我创建了一个test / controllers / lions_controller_test.rb,它会抱怨lions_controller不存在(非常正确:) :)
编辑:回复&#34;元素&#34;
嗯,这里的问题是我只启用了animal_controller索引路由。所有其他我想要禁用,只能通过狮子路线启用它们(转发给控制器&#39;动物&#39;)。
当使用STI时,每个人都会启用基本sti模型(动物)的所有路线以及狮子路线吗?
禁用基本sti模型的路线是不是或者不可能?