在Rails中了解嵌套资源中的浅层4

时间:2016-01-18 16:35:59

标签: ruby-on-rails-4

我需要为3个模型做嵌套资源:

  • 家庭(狗,猫,鸟)
  • 品种(比格犬,义和团......)
  • 动物

遵循Rails指南建议我不应该这样做:

  resources :families
    resources :breeds
      resources :animals
    end
  end

和“Rails Guides”建议使用“浅”,所以我应该这样做:

  resources :families, shallow: true do
    resources :breeds, shallow: true do
      resources :animals
    end
  end

我理解“指南”说“不嵌套成员行为”......仅限:[:index,:new,:create] ...

但是它似乎只适用于最后两个嵌套资源,有3个嵌套资源(比如我的情况)rake routes给我:

Prefix:            breed_animals
Verb:              GET
URI Pattern:       /breeds/:breed_id/animals(.:format)
Controller#Action: animals#index

我期望在URI模式中:

URI Pattern:    /family/:family_id/breeds/:breed_id/animals(.:format)

¿我失去了什么?

非常感谢

1 个答案:

答案 0 :(得分:1)

这是使用浅路由时的预期结果:

/breeds/:breed_id

这很浅,因为无论您在哪个家庭,品种ID都是独一无二的。

因此,该品种的动物指数对于该路线也是正确的,浅路由的行为符合预期。