Sha256: ee20054118e1d7c7fe3ed7cd34dc6102739c69cd5679c0b993ec295298f64d29
Contents?: true
Size: 849 Bytes
Versions: 1
Compression:
Stored size: 849 Bytes
Contents
require "difference_update_seed/version" module DifferenceUpdateSeed refine ActiveRecord::Base.singleton_class do def seed(*keys, &block) unknown_columns = keys.to_a.map(&:to_s) - column_names unless unknown_columns.empty? fail ArgumentError, "Unknown columns: #{unknown_columns.join(',')}. Valid columns: #{column_names.join(',')}" end new_record = new(&block) record = find_or_initialize_by(new_record.attributes.slice(*keys.map(&:to_s))) record.tap(&block) if record.new_record? record.save! puts "Insert new record #{record.attributes.to_s}" else if record.changed? puts "Update record. ID: #{record.id}, #{record.changes}" record.save! else puts "Do nothing. ID #{record.id}" end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
difference_update_seed-0.0.1 | lib/difference_update_seed.rb |