2016-03-22 3 views
1

Ich habe das "div" geklont, das 3 Felder enthält. Während ich diese Werte in der Datenbank aktualisiere, entferne ich die früheren Werte und ersetze diese Werte unter Verwendung der ID. Wie kann ich die Spaltenwerte aktualisieren, ohne frühere Datensatzwerte zu löschen?Aktualisieren der geklonten Elementwerte in db ohne die zuvor geklonten Feldsätze zu löschen

@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 

Modell:

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

Können Sie irgendeine Art von Code-Schnipsel zur Verfügung stellen, das Problem zu beschreiben? –

+0

Hier nahm ich die Referenzspalte als "is_deleted" und setzte sie auf false. Ich finde die Datensätze, bei denen "is_deleted" wahr ist. Stattdessen möchte ich die bereits vorhandenen Datensatz Werte ändern – BalajiB

+0

ist das Code-Snippet genug oder muss ich ein bisschen mehr anhängen? @ JohnBargman – BalajiB

Antwort

1

Sie sollten es auf diese Weise versuchen:

@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 
Verwandte Themen