class SeedGimmick::Seed::Difference
Attributes
changes[R]
Public Class Methods
extraction(seed)
click to toggle source
# File lib/seed_gimmick/seed/difference.rb, line 15 def extraction(seed) pk = seed.model.primary_key database = seed.model.all.each_with_object({}) {|row, obj| obj[row.public_send(pk)] = row } seed_data = seed.seed_io.values.each_with_object({}) {|row, obj| obj[row[pk].to_i] = row } diff = [] (database.keys - seed_data.keys).each do |id| diff << [Flag::DATABASE, id, database.delete(id), nil, nil] end (seed_data.keys - database.keys).each do |id| diff << [Flag::SEED, id, nil, seed_data.delete(id), nil] end database.each do |id, row| s_attrs = seed_data[id].dup s_attrs.delete(pk) row.assign_attributes(s_attrs) if row.changed? changes = row.changes changes.each {|k,(old,_)| row.public_send("#{k}=", old) } diff << [Flag::CHANGE, id, row, seed_data.delete(id), changes] end end new(diff) end
new(diff)
click to toggle source
# File lib/seed_gimmick/seed/difference.rb, line 44 def initialize(diff) @changes = diff.sort_by(&:second).map {|d| Change.new(*d) } end
Public Instance Methods
changed?()
click to toggle source
# File lib/seed_gimmick/seed/difference.rb, line 48 def changed? !@changes.empty? end
each() { |change| ... }
click to toggle source
# File lib/seed_gimmick/seed/difference.rb, line 52 def each @changes.each do |change| yield change end end