Я пытаюсь установить связь «многие ко многим» между двумя объектами. Я прошел несколько уроков и смог правильно настроить модель. Моя проблема в том, что у меня возникают проблемы с настройкой правильных маршрутов, чтобы я мог просмотреть полную взаимосвязь ... что-то вроде отображения только товаров из определенной категории ( / category / 1 / products / )
Вот как я сгенерировал модель:
script/generate scaffold category name:string
script/generate scaffold product name:string
script/generate scaffold categorization category_id:integer product_id:integer
Вот схема:
ActiveRecord::Schema.define(:version => 20100205210519) do
create_table "categories", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "categorizations", :force => true do |t|
t.integer "category_id"
t.integer "product_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "products", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
end
Вот 3 модельных объекта:
class Category < ActiveRecord::Base
has_many :categorizations
has_many :products, :through => :categorizations
end
class Product < ActiveRecord::Base
has_many :categorizations
has_many :categories, :through => :categorizations
end
class Categorization < ActiveRecord::Base
belongs_to :product
belongs_to :category
end
Довольно просто, и кажется, что все работает нормально, потому что я могу добавить продукт в категорию через консоль:
@category.categorizations << Categorization.new(:product_id => 1)
Я уверен, что мне нужно обновить файл rout.rb, но я не знаю, как это сделать правильно. Вот что я положил в файл маршрутов:
map.resources :categories, :has_many => :products
Когда я пытаюсь просмотреть товары в категории "/ Categories / 7 / products /", они просто перечисляют все товары! Означает ли это, что мой маршрут настроен правильно, и мне просто нужно написать настраиваемое действие на контроллере продуктов (вместо того, чтобы его индексировать)? Что я тут не так делаю ... я рядом или далеко?!?
Спасибо