Rails嵌套关注不起作用

时间:2016-05-05 07:49:18

标签: ruby-on-rails ruby activerecord

这是我的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>

我在这里遗漏了一些明显的东西?

1 个答案:

答案 0 :(得分:1)

  

WorkOrder.last.uploads NoMethodError:#

的未定义方法'uploads'

您似乎错过了模型has_many的{​​{1}}关系:

WorkOrder

请注意什么路由机制,与模型关系不一样。因此,第一个声明管理来处理控制器的请求,最后一个定义了模型之间的关系。在大多数情况下,命名格式与模型相同,但它使用相当独立的轨道机制。