2011-02-07 6 views
2
class Category < ActiveRecord::Base 
    has_and_belongs_to_many :products 
end 


class Product < ActiveRecord::Base 
    has_and_belongs_to_many :categories 
end 

и столRails 3, данные таблицы присоединиться

product_category with product_id and category_id 

, она работает хорошо, то я ставлю на него данные, но, как мне нужно, чтобы получить данные, например по категориям? category_id = 1 и все продукты этой категорией

Спасибо

ответ

4

вашего присоединиться к потребности табличной назвать categories_products тем рельсам по умолчанию для присоединения имени таблицы, это в алфавитном порядке, поэтому категории до продуктов, и они нуждаются быть множественным.

как только вы, что работать вы можете получить доступ к ассоциации по имени, как метод:

Category.find(1).products 

дает вам все продукты, принадлежащие к категории ид 1

Product.find(1).categories 

дает все категории, принадлежащие продукт id 1

и т. д.

+0

спасибо, у меня есть правильная таблица, где мне нужно написать это? в представлении или контроллере, и, во-вторых, если я хочу, чтобы вызывать продукты, подобные этому localhost/categories/1, мне нужно написать Category.find (params [: id] .products? –

+0

и я получаю аргумент вне диапазона –

+0

попробуйте запустить консоль проверять и видеть, какая конкретная часть неверна. Перед рельсами 3 команда ruby ​​script/console после рельсов 3 команда rails c, а затем в консоли вы можете ввести Category.find (1), чтобы узнать, получаете ли вы ошибку. – Kalendae

0

Попробуйте это .. .once вы меняете таблицу соединений на category_products.

<% category.products.each do |product| %> 
<td><%= product.name %></td> 
<% end %> 

..............

определить область в модели scope :sorted, order('products.name ASC') и @products = Products.sorted в контроллере.

Это сказал я рекомендовал бы пробуя has_many products :through => categorization

Это должно сделать трюк.

+0

спасибо, еще один quastion, у меня есть manufacturer_id в таблице продуктов, i хотите показать имя для manufacturer_id, но не id –

Смежные вопросы