Rails 3,来自连接表的数据

时间:2011-02-07 18:24:51

标签: ruby-on-rails

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以及此类别的所有产品

谢谢

2 个答案:

答案 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

这应该可以解决问题。