Rails вложенные ресурсы (многие уровни) класс, рассматриваемый как модуль

StackOverflow https://stackoverflow.com/questions/5365516

Вопрос

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

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

Кто -нибудь знает, что я делаю не так?

Это было полезно?

Решение

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

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

Вы получите такие URL -адреса:

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top