class Category < ActiveRecord::Base
has_and_belongs_to_many :products
end
class Product < ActiveRecord::Base
has_and_belongs_to_many :categories
end
和表
product_category with product_id and category_id
,它运行良好,然后我把数据,但我如何需要获取数据,例如按类别? category_id = 1以及此类别的所有产品
谢谢
答案 0 :(得分:4)
您的联接表需要称为categories_products 这就是连接表名称的rails默认值,它按字母顺序排列,所以产品之前的类别需要复数。
一旦你有了工作,你可以通过名称访问关联,如方法:
Category.find(1).products
为您提供属于id 1
类别的所有产品Product.find(1).categories
为您提供属于id 1
产品的所有类别依旧......
答案 1 :(得分: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
这应该可以解决问题。