【问题标题】:Rails nested concerns not workingRails 嵌套关注点不起作用
【发布时间】:2016-05-05 07:49:18
【问题描述】:

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

故事的简短版本是我添加了 :upload 能够关注 Locations 并且它与可评论一起工作正常。所以这些工作:

Location.last.uploads => #<ActiveRecord::Associations::CollectionProxy []>Location.last.comments => #<ActiveRecord::Associations::CollectionProxy []>

但这些不是:

WorkOrder.last.uploads NoMethodError: undefined method 'uploads' for #<WorkOrder:0x007f9c242cf110>

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

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

    WorkOrder.last.uploads NoMethodError: undefined method 'uploads' for #

    您似乎错过了模型WorkOrderhas_many 关系:

    class WorkOrder
       has_many :uploads, as: :uploadable  #... seems it should be polymorphic
    end
    

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

    【讨论】:

    • 是的——就这么明显。我忘了回去把它添加到我的模型中。这是一个深夜:)。谢谢!
    • 在 Rails 中使用多态不是一个好主意。问题是数据库不知道 FK 指向哪个位置会导致缺少父/子关系。
    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多