Вложенные ресурсы Rails (много уровней) Класс рассматривается как Модуль - PullRequest
1 голос
/ 20 марта 2011

Это мои модели:

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 Ответ

1 голос
/ 20 марта 2011

Документация по Rails явно рекомендует, чтобы мы не вкладывали ресурсы глубиной более 1 уровня:

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

Вы получите такие URL:

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

Это не красиво. Старайтесь избегать этого.

...