Module: Card::ActiveRecordHelper

Included in:
Migration
Defined in:
lib/card/active_record_helper.rb

Instance Method Summary collapse

Instance Method Details

#create_card(args) ⇒ Object



2
3
4
5
# File 'lib/card/active_record_helper.rb', line 2

def create_card args
  resolve_name_conflict args
  Card.create! args
end

#create_card!(args) ⇒ Object



7
8
9
# File 'lib/card/active_record_helper.rb', line 7

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

#create_or_update(name_or_args, args = nil) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/card/active_record_helper.rb', line 20

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

#create_or_update!(name_or_args, args = nil) ⇒ Object



30
31
32
33
34
# File 'lib/card/active_record_helper.rb', line 30

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

#resolve_name_conflict(args) ⇒ Object



36
37
38
39
40
41
# File 'lib/card/active_record_helper.rb', line 36

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

#update_card(name, args) ⇒ Object



11
12
13
14
# File 'lib/card/active_record_helper.rb', line 11

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

#update_card!(args) ⇒ Object



16
17
18
# File 'lib/card/active_record_helper.rb', line 16

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