Rails嵌套资源(多级)类被视为模块

时间:2011-03-19 23:04:22

标签: ruby-on-rails-3 associations nested-resources

这些是我的模特:

class Company < ActiveRecord::Base  
  has_many :products  
end

class Product < ActiveRecord::Base  
  belongs_to :company  
  has_many :prices  
end

class Price < ActiveRecord::Base  
  belongs_to :product  
end

我在路由中将它们定义为嵌套资源

resources :companies  
namespace :company do  
  scope ":company_id" do  
    resources :products do  
      resources :prices  
      resources :production_capabilities  
    end  
  end  
end

我想将控制器和视图放在与该结构相匹配的目录中

app/controllers/companies_controller.rb  
app/controllers/company/products_controller.rb  
app/controllers/company/product  
app/controllers/company/product/prices_controller.rb

只要我在公司内部创建产品目录,我就会尝试调用

Company.find(1).products

我得到了

NoMethodError: undefined method 'quoted_table_name' for Company::Product:Module

有人知道我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

Rails文档明确建议我们不要将资源嵌套超过1级:

http://guides.rubyonrails.org/routing.html#nested-resources

你会得到这样的网址:

/company/1/product/4/price/5

那不漂亮。尽量避免它。