2011-07-23 88 views
1

我是RoR noob,所以這可能是某個人的簡單問題。我創建了兩個模型 - 用戶和反饋,並且我有兩個與它們關聯的表。用戶和反饋。Ruby on Rails - 創建關係表

現在我想創建一個與user_id作爲一列和feeback_id作爲另一列的關係表。

我是創建模型還是遷移?我很困惑。

這是我的用戶和反饋遷移。

class CreateUsers < ActiveRecord::Migration 
def self.up 
create_table :users do |t| 
    t.string "first_name" 
    t.string "last_name" 
    t.string "email" 
    t.string "phone" 
    t.string "password_hashed" 
    t.string "password_salt" 
    t.boolean "isdeleted", :default => false 
    t.timestamps 
end 
end 

def self.down 
drop_table :users 
end 
end 

class CreateFeedbacks < ActiveRecord::Migration 
def self.up 
create_table :feedbacks do |t| 
    t.text "feedback" 
    t.integer "rating" 
    t.boolean "isdeleted", :default => false 
    t.timestamps 
end 
end 
def self.down 
drop_table :feedbacks 
end 
end 

現在我要創建一個模型嗎? > rails生成模型FeedbackUserJoinTable?或者只是像這樣的遷移?

class CreateFeedbackUserJoinTable < ActiveRecord::Migration 
def change 
create_table :feedbacks_users, :id => false do |t| 
    t.integer :feedback_id 
    t.integer :user_id 
end 
end 
end 

回答

2

您不需要創建模型。就像你寫的那樣創建遷移:)

+0

它如何知道在這兩個表之間建立關係?是因爲他們都在同一個文件中? –

3

我喜歡this answerhas_and_belongs_to_many上的另一個SO問題。基本上使用HABTM關係,如果用戶和反饋之間的關係將保持簡單。

如果您預見到這些關係不會保持簡單,則應在兩者之間創建一個連接模型並使用has_many ..., :through => ...。這樣,當您想要將特性添加到特定的一對User和Feedback對象之間的關係時,可以在連接模型上定義這些特性。

+0

我是RoR的總noob。我可以先創建一個遷移來創建連接表,但如果事情變得更復雜,可以事後定義一個模型? – countdrak

+0

你絕對可以做到這一點。您可能需要解開一些意大利麪代碼,但這是學習過程的一部分。再說一次,也許你的用戶/反饋需求不會改變,這對你來說仍然是理想的解決方案。根據你寫的內容,你的方法是有道理的。在設計的這一點上,**對你的需求進行思考很重要,這聽起來就像你所做的一樣。 –