Sha256: 4de278a38c1f6d1fc56be6319a2aafc27682de137787b37e55d274a00991d27e

Contents?: true

Size: 1005 Bytes

Versions: 10

Compression:

Stored size: 1005 Bytes

Contents

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

  def create_card! args
    create_card args.reverse_merge(rename_if_conflict: :new)
  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=nil
    name = args ? name_or_args : name_or_args[:name]
    args ||= name_or_args
    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
    name = args ? name_or_args : name_or_args[:name]
    args ||= {}
    create_or_update name, args.reverse_merge(rename_if_conflict: :new)
  end

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

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
card-1.17.4 lib/card/active_record_helper.rb
card-1.17.3 lib/card/active_record_helper.rb
card-1.17.2 lib/card/active_record_helper.rb
card-1.17.1 lib/card/active_record_helper.rb
card-1.17.0 lib/card/active_record_helper.rb
card-1.16.15 lib/card/active_record_helper.rb
card-1.16.14 lib/card/active_record_helper.rb
card-1.16.13 lib/card/active_record_helper.rb
card-1.16.12 lib/card/active_record_helper.rb
card-1.16.11 lib/card/active_record_helper.rb