这是我的routes.rb
文件:
concern :commentable do
resources :comments do
get 'cancel'
end
end
concern :uploadable do
resources :uploads, concerns: [:commentable], shallow: true do
end
end
concern :workable do
resources :work_orders, concerns: [:commentable, :uploadable], path: 'workorders', shallow: true do
end
end
resources :locations, concerns: [:workable, :commentable, :uploadable] do
get 'partner/add'
get 'partner/remove'
end
这个故事的简短版本是我添加了:上传能够关注的地点,它可以和可爱的一起工作。所以这些工作:
Location.last.uploads => #<ActiveRecord::Associations::CollectionProxy []>
和Location.last.comments => #<ActiveRecord::Associations::CollectionProxy []>
但这些不是:
WorkOrder.last.uploads NoMethodError: undefined method 'uploads' for #<WorkOrder:0x007f9c242cf110>
我在这里遗漏了一些明显的东西?
答案 0 :(得分:1)
WorkOrder.last.uploads NoMethodError:#
的未定义方法'uploads'
您似乎错过了模型has_many
的{{1}}关系:
WorkOrder
请注意什么路由机制,与模型关系不一样。因此,第一个声明管理来处理控制器的请求,最后一个定义了模型之间的关系。在大多数情况下,命名格式与模型相同,但它使用相当独立的轨道机制。