0

当我插入到 db 时,rails 出现问题:如果我设置 doc_items_attributes 为 [],则总是有一行,a 有一行空的外键和 id

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 有值。

文档:

id partner
1 john

文档项目:

id doc_id qty
1   1     1
2   1     2
3   1   

有人可以帮忙吗?

4

2 回答 2

1

您正在构建一个新的空文档项

doc.doc_items.build

线。那是空行。

您可能希望使用 build 方法来构建 doc_items。

doc = Doc.create( :partner_info => "john")
doc.doc_items.build(:qty => '1')
doc.doc_items.build(:qty => '2')    
doc.save
于 2013-04-05T14:36:51.477 回答
0

我找到了

删除此行它有效

doc.doc_items.build
于 2013-04-06T13:13:25.430 回答