Ruby Rails STI控制器和测试单元路由

时间:2014-08-12 08:20:33

标签: ruby-on-rails ruby ruby-on-rails-3 testing sti

我在我的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模型的路线是不是或者不可能?

0 个答案:

没有答案