2011-02-07 60 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 

给你所有的产品属于ID 1

Product.find(1).categories 

的类别给你属于所有类别产品编号为1

等等......

+0

谢谢,我有正确的表,我需要写这个吗?在视图或控制器和第二件事,如果我想要这样的本地主机/类/ 1的通话产品我需要写Category.find(params [:id] .products? – 2011-02-07 18:48:58

+0

和我越来越争辩 – 2011-02-07 19:15:24

0

试试这个.. 。只需将联接表更改为categories_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

这应该做的伎俩。