0

何かが変更された場合にのみ更新するようにこのコードを修正するにはどうすればよいですか。csv を使用して更新しています。確認フィールドを変更する必要がありますが、レコード内の何かが変更された場合のみです。

 CSV.parse(atdecode,{headers: true, col_sep:  "|", force_quotes:  true, quote_char: "~", converters: :date}) do |row|
                                   @contracts = Contract.unscoped.where(:unique3 => row[0]).first_or_create
                                   @contracts.update_attributes( {
                                    unique3: row[0],
                                    prntkey23: row[1],
                                    prntkey13: row[2],
                                    act_code: row[3],
                                    accounting_confirmation_date: row[4],
                                    act_form: row[5],
                                    act_net: row[6],
                                    agent: row[7],
                                    act_booked: row[8]
                                         })
                                     if @contracts.changed?
                           @contracts.update_attribute( {
                           confirmation: 0
                         })
                       end
                         end
4

1 に答える 1

1

これでいけると思います

@contracts.attributes = {unique3: row[0], 
                         prntkey23: row[1],
                         prntkey13: row[2],
                         act_code: row[3],
                         accounting_confirmation_date: row[4],
                         act_form: row[5],
                         act_net: row[6],
                         agent: row[7],
                         act_booked: row[8]
                         }
@contracts.confirmation = 0 if @contracts.changed?
@contracts.save
于 2012-10-13T04:08:58.160 に答える