2012-12-06 107 views
0

我一直在使用Michael Hartl的教程,我試圖創建一個名爲「食譜」的新模型,以允許用戶發佈食譜。該模型基本上與micropost模型相同,因爲用戶應該能夠發佈多個食譜,並且所有食譜應該鏈接到一個用戶。因此,我用同樣的命令和遷移作爲微柱:創建新的導軌遷移錯誤

class CreateMicroposts < ActiveRecord::Migration 
    def change 
    create_table :microposts do |t| 
     t.string :content 
     t.integer :user_id 

     t.timestamps 
    end 

    add_index :microposts, [:user_id, :created_at] 
    end 
end 

使用命令創建:軌生成模型微柱的內容:字符串USER_ID:整數

我有但問題是,主鍵在這兩個表中都是user_id。這會工作,或者當我嘗試輸入配方時,它會嘗試從microposts表中取出嗎?在此先感謝

+1

對不起,我還應該提到:食譜中的代碼被輸入與上面相同:唯一的區別是,它說:「CreateRecipes 「而不是」CreateMicroposts在頂部,並且它具有create_table方法它代表食譜,索引在兩個 – blc09002

回答

0

當我去試圖進入一個配方時,它會嘗試從microposts表中取而代之?

Recipe模型在應用程序中默認會在你的數據庫中的表recipes交互。同樣,默認情況下,Micropost模型將與數據庫中的microposts表進行交互。

只要您使用Recipe模型,Recipe的實例將不會從microposts表中拉出。

這聽起來像你可能對錶的主鍵有什麼根本的誤解,也許可能是數據庫表的工作原理;但現在這超出了這個問題的範圍。


順便說一句,你可能應該做

rails generate model MicroPost content:string user_id:integer 

(注意大寫PMicroPost。這是一個更好的名稱,將在您的數據庫中創建一個micro_posts表。

0

主鍵不是兩個表中的任何一箇中的user_id。每個模型都會生成一個包含用作PK的隱式數字自動增量ID列的表。

add_index的作用是在user_id列上添加一個索引。索引不是PK。

無論如何,你應該在你的食譜遷移更改add_index聲明:

add_index :recipes, [:user_id, :created_at]