2011-03-02 53 views
2

我已經建立2種型號的導軌和修改模型類的許多添加到一對多的關係一對多的關係(與has_and_belongs_to_many許多在軌道3

class User < ActiveRecord::Base 
    has_and_belongs_to_many :categories 
end 
class Category < ActiveRecord::Base 
    has_and_belongs_to_many :users 
end 

當我創建一個用戶,雖然Web界面,我沒有被要求選擇一些類別。

我錯過了什麼?我讀了另一張表是必需的,但它是在has_many而不是has_and_belongs_to_many聲明的情況下)。

你能幫忙嗎?

我認爲這是一個牛逼的問題,但...

非常感謝,

問候,

呂克

回答

3

對於HABTM,您需要一個名爲categories_users的連接表。使用此遷移:

def self.up 
    create_table :categories_users, :id => false do |t| 
    t.integer :category_id 
    t.integer :user_id 
    end 
end 
0

什麼是您的看法是什麼樣子? Rails的腳手架不會考慮多對多,所以你需要自己處理。

你的數據存儲是什麼樣的?如果您使用的是RDBMS,那麼對於多對多關係,您通常需要一個聯結表。大多數(全部)SQL數據庫並不自然處理多對多。

+0

好吧,我知道更好地理解爲什麼需要此表。我只是雖然它是由rails自動創建的。非常感謝。 – Luc