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

這應該做的伎倆。