2016-03-22 47 views
1

我克隆了包含3個字段的「div」。當Im更新數據庫中的這些值時,即時刪除較早的值並使用id替換這些值。如何更新列值而不刪除較早的記錄值?在db中更新克隆的元素值而不刪除以前的克隆字段記錄

@pre_data=MgMultiSelect.where(:mg_details_id=>params[:id]) 

@pre_data.each do |select| 
    select.is_deleted=1 
    select.save 
end 

@selected_data=params[:team_id_new] 

if @selected_data.present? 

    for i in [email protected]_data.length 

    @update_data=MgMultiSelect.new() 
    @[email protected]_data[i] 
    @[email protected]_data.id 
    @update_data.is_deleted=0 
    @update_data.save 

    end 

end 

型號:

class CreateMgMultiSelects < ActiveRecord::Migration 
def change 
    create_table :mg_multi_selects do |t| 
    t.string :team_id_new 
    t.integer :mg_details_id 
    t.boolean :is_deleted 
    t.timestamps 
    end 
end 
end 
+1

你能否提供一些代碼片段來描述這個問題? –

+0

這裏我將參考列設置爲「is_deleted」並將其設置爲false。我檢索「is_deleted」爲真的記錄。相反,我想修改已經存在的記錄的值 – BalajiB

+0

是代碼片段就夠了還是我必須追加更多一點? @JohnBargman – BalajiB

回答

1

你應該試試這種方法:

@pre_data=MgMultiSelect.where(:mg_details_id=>params[:id]) 

@selected_data=params[:team_id_new] 
if params[:team_id_new].present? 

    params[:team_id_new].each do |id| 
    obj = @pre_data.where(:team_id_new => id).first 
    if obj.present? 
    obj.update_attributes(:mg_details_id => @task_data.id,:is_deleted => 0) 
    end 
    end 
end