2013-04-05 52 views
0

我有軌一個問題,當我插入到數據庫:送花兒給人有一排,如果我設置doc_items_attributes是[]一個有一排空與外鍵和idRails:爲什麼insert_with_nested_attributes_for有一個空行?

class Doc < ActiveRecord::Base 

    attr_accessible :doc_items_attributes, :partner_info 

    has_many :doc_items, dependent: :destroy 
    accepts_nested_attributes_for :doc_items, allow_destroy:true 

模型doc_items

class DocItem < ActiveRecord::Base 
    attr_accessible :qty, :doc_id 
    belongs_to :doc 

數據:

params = { :doc => { 
    :partner_info => 'john', :doc_items_attributes => [ 
    { :qty => '1' }, 
    { :qty => '2' } 
    ] 
    }} 



doc = Doc.new() 

doc.assign_attributes(params)  

doc.doc_items.build 

doc.save 
doc.doc_items.length #3 

有一個空行,而不在表doc_items數據,但DOC_ID具有價值。

DOC:

id partner 
1 john 

doc_items:

id doc_id qty 
1 1  1 
2 1  2 
3 1 

任何人都可以幫忙嗎?

回答

1

您正在建設中的

doc.doc_items.build

線一個新的空文檔項目。那是空蕩蕩的一排。

您可能希望使用構建方法構建doc_items。

doc = Doc.create(:partner_info => "john") 
doc.doc_items.build(:qty => '1') 
doc.doc_items.build(:qty => '2')  
doc.save 
+0

嗨阿納爾多,doc_items與許多行和許多列的哈希,所以我不想手動添加。我不知道爲什麼rails會在我的數據後面插入一個空行。這是不合邏輯的 – user1035429 2013-04-05 16:36:09

0

我發現它

刪除此行它的工作原理

doc.doc_items.build 
相關問題