Sha256: 36b4e0c8b96fb91cd636e44f3bfbd3db49ad56a6ff483da20aa36fa42f61c2e9

Contents?: true

Size: 1.28 KB

Versions: 3

Compression:

Stored size: 1.28 KB

Contents

class Card
  module ActiveRecordHelper
    def create_card args
      resolve_name_conflict args
      Card.create! args
    end

    # if card with same name exists move it out of the way
    def create_card! args
      create_card args.reverse_merge(rename_if_conflict: :old)
    end

    def update_card name, args
      resolve_name_conflict args
      Card[name].update_attributes! args
    end

    def update_card! args
      update_card args.reverse_merge(rename_if_conflict: :new)
    end

    def create_or_update name_or_args, args={}
      if name_or_args.is_a?(Hash)
        name = name_or_args.delete :name
        args = name_or_args
      else
        name = name_or_args
      end
      if Card[name]
        update_card name, args
      else
        create_card args.merge(name: name)
      end
    end

    def create_or_update! name_or_args, args=nil
      if name_or_args.is_a?(Hash)
        name = name_or_args.delete(:name)
        args = name_or_args
      else
        name = name_or_args
        args ||= {}
      end
      create_or_update name, args.reverse_merge(rename_if_conflict: :new)
    end

    def resolve_name_conflict args
      rename = args.delete :rename_if_conflict
      return unless rename
      args[:name] = Card.uniquify_name args[:name], rename
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
card-1.18.6 lib/card/active_record_helper.rb
card-1.18.5 lib/card/active_record_helper.rb
card-1.18.4 lib/card/active_record_helper.rb