2014-02-27 21 views
0

我在我的應用二CRUDS:我如何將記錄的ID保存在另一張桌子上?

Person : id, name, email 
Documents: id, name, number, person_id 

當我創建的CRUD一個新的人,我需要自動設置文檔表person_id

我嘗試用一​​個回調before_save,但我不知道怎麼打發PARAMS以正確的方式。

我可以在PersonController直接辦?

我該怎麼做?

我想我不清楚我的問題。

People has_many :documents 
Documents belongs_to :people 

該文件不會被用戶插入。這些文檔將被一個rake任務插入,該任務將從外部源獲取文檔。

當耙任務嘗試插入一個新的文檔,該文檔搜索的文件表爲person_id。如果person_id不存在,則文檔不會被保存。這是我的主要問題。

+0

這沒有意義。當你創建一個人時,你是否也在創建一個文檔? – meagar

+0

您需要自動在文檔表的*所有行*上設置person_id? – giorgian

+0

我的事情我不清楚在我的問題。 人們有很多文件 文件belongs_to人。 用戶不會插入這些文檔。這些文件將被一個rake任務插入,該任務將從外部源獲取文件。 當rake任務嘗試插入新文檔時,文檔在文檔表上搜索person_id。如果person_id不存在,則文檔不會被保存。這是我的主要問題。 –

回答

0

我還不能評論,所以我把這個答案。如果我理解正確,當你創建一個人,你想自動創建一個關聯的文件? 如果是這種情況,那麼你可以嘗試在你的人員模型中添加以下內容。

after_save :create_document 

def create_document 
    @document = Document.create(
     :person_id => self.id, 
     # any other needed code 
    ) 
end 

我用after_save的,因爲這樣你呼籲對已經產生,而不是試圖創建的那個人之前,一個爲person_id傳遞到文件的對象。這個解決方案可能不是最優雅的解決方案,但它可能有助於暫時解決問題,直到有人能夠更好地回覆。

+0

即時通訊使用此表單,並按預期工作。如果沒有任何其他方式,我將繼續使用這種方法 –

+0

很好用,我剛剛意識到,即使在人員被修改或更新時,這也會創建一個新文檔,因此您可能需要添加一些驗證以確保文檔記錄在調用.create()之前不存在 – SoSimple

相關問題