我有以下一對多關聯。文檔有很多部分,部分有很多項目。Rails自動保存控制器操作中的關聯
class Document < ActiveRecord::Base
has_many :document_sections, :dependent => :destroy, :autosave => true
has_many :document_items, :through => :document_sections
end
class DocumentSection < ActiveRecord::Base
belongs_to :document
has_many :document_items, :dependent => :destroy, :autosave => true
end
class DocumentItem < ActiveRecord::Base
belongs_to :document_section
end
這裏是params哈希表:
-
Parameters: {"commit"=>"Submit Document", "authenticity_token"=>"4nx2B0pJkvavDmkEQ305ABHy+h5R4bZTrmHUv1setnc=", "id"=>"10184", "document"=>{"section"=>{"10254"=>{"seqnum"=>"3", "item"=>{"10259"=>{"comments"=>"tada"}}}}, "comment"=>"blah"}}
我有以下的更新方法...
# PUT /documents/1
# PUT /documents/1.xml
def update
@document = Document.find(params[:id])
# This is header comment
@document.comment = params[:document][:comment]
params[:document][:section].each do |k,v|
document_section = @document.document_sections.find_by_id(k)
if document_section
v[:item].each do |key, value|
document_item = document_section.feedback_items.find_by_id(key)
if document_item
# This is item comments
document_item.comments = value[:comments]
end
end
end
end
@document.save
end
當我保存它僅更新文檔標題註釋的文檔。它不保存document_item註釋。不應該自動保存選項也更新關聯。
在日誌中只有以下DML註冊:
UPDATE documents SET updated_at = TO_DATE('2010-03-09 08:35:59','YYYY-MM-DD HH24:MI:SS'), comment = 'blah' WHERE id = 10184
如何通過保存文檔保存的關聯。
如果你不介意,請清理你的文章格式。我錯讀了一半。您突出顯示代碼位,然後單擊代碼按鈕以正確縮進(4個空格)。在你的例子中,最好爲每個「文件」創建一個單獨的代碼塊。 – dpb 2010-03-10 06:47:32
@dpb同意。我修改了一下佈局,但@ ash34請嘗試使用語法高亮等來改進它。這個問題幾乎不可讀 – marcgg 2010-03-10 11:19:39