Module: Card::Model::SaveHelper
- Included in:
- Card::Migration
- Defined in:
- lib/card/model/save_helper.rb
Overview
API to create and update cards. It is intended as a helper for "external" scripts (seeding, testing, migrating, etc) and not for internal application code. The general pattern is: All methods use the ActiveRecord !-methods that throw exceptions if somethings fails. All !-methods in this module rename existing cards to resolve name conflicts)
Instance Method Summary collapse
- #add_name(name, content_or_args) ⇒ Object
- #create_card(name_or_args, content_or_args = nil) ⇒ Object (also: #create)
-
#create_card!(name_or_args, content_or_args = nil) ⇒ Object
(also: #create!)
if card with same name exists move it out of the way.
- #create_or_update_card(name_or_args, content_or_args = nil) ⇒ Object (also: #create_or_update)
- #create_or_update_card!(name_or_args, content_or_args = nil) ⇒ Object (also: #create_or_update!)
- #delete_card(name) ⇒ Object (also: #delete)
- #delete_code_card(name) ⇒ Object
- #ensure_attributes(card, args) ⇒ Object
-
#ensure_card(name_or_args, content_or_args = nil) ⇒ Object
(also: #ensure)
create if card doesn't exist updates existing card only if given attributes are different except the name For example if a card with name "under_score" exists then
ensure_card "Under Score"
doesn't change anything. -
#ensure_card!(name_or_args, content_or_args = nil) ⇒ Object
(also: #ensure!)
create if card doesn't exist updates existing card only if given attributes are different including the name For example if a card with name "under_score" exists then
ensure_card "Under Score"
renames it to "Under Score". - #resolve_name_conflict(args) ⇒ Object
-
#standardize_args(name_or_args, content_or_args) ⇒ Object
Args.
- #standardize_update_args(content_or_args) ⇒ Object
- #update_card(name, content_or_args) ⇒ Object (also: #update)
- #update_card!(name, content_or_args) ⇒ Object (also: #update!)
Instance Method Details
#add_name(name, content_or_args) ⇒ Object
105 106 107 108 109 110 111 |
# File 'lib/card/model/save_helper.rb', line 105 def add_name name, content_or_args if content_or_args.is_a?(String) { content: content_or_args, name: name } else content_or_args.merge name: name end end |
#create_card(name_or_args, content_or_args = nil) ⇒ Object Also known as: create
12 13 14 15 16 |
# File 'lib/card/model/save_helper.rb', line 12 def create_card name_or_args, content_or_args=nil args = standardize_args name_or_args, content_or_args resolve_name_conflict args Card.create! args end |
#create_card!(name_or_args, content_or_args = nil) ⇒ Object Also known as: create!
if card with same name exists move it out of the way
73 74 75 76 |
# File 'lib/card/model/save_helper.rb', line 73 def create_card! name_or_args, content_or_args=nil args = standardize_args name_or_args, content_or_args create_card args.reverse_merge(rename_if_conflict: :old) end |
#create_or_update_card(name_or_args, content_or_args = nil) ⇒ Object Also known as: create_or_update
24 25 26 27 28 29 30 31 |
# File 'lib/card/model/save_helper.rb', line 24 def create_or_update_card name_or_args, content_or_args=nil args = standardize_args name_or_args, content_or_args if Card[args[:name]] update_card(args.delete(:name), args) else create_card(args) end end |
#create_or_update_card!(name_or_args, content_or_args = nil) ⇒ Object Also known as: create_or_update!
83 84 85 86 |
# File 'lib/card/model/save_helper.rb', line 83 def create_or_update_card! name_or_args, content_or_args=nil args = standardize_args name_or_args, content_or_args create_or_update args.reverse_merge(rename_if_conflict: :new) end |
#delete_card(name) ⇒ Object Also known as: delete
33 34 35 36 |
# File 'lib/card/model/save_helper.rb', line 33 def delete_card name return unless (card = Card[name]) card.delete! end |
#delete_code_card(name) ⇒ Object
38 39 40 41 |
# File 'lib/card/model/save_helper.rb', line 38 def delete_code_card name update name, codename: nil delete name end |
#ensure_attributes(card, args) ⇒ Object
119 120 121 122 123 |
# File 'lib/card/model/save_helper.rb', line 119 def ensure_attributes card, args update_args = args.select { |key, value| card.send(key) != value } return if update_args.empty? card.update_attributes! update_args end |
#ensure_card(name_or_args, content_or_args = nil) ⇒ Object Also known as: ensure
create if card doesn't exist
updates existing card only if given attributes are different except the
name
For example if a card with name "under_score" exists
then ensure_card "Under Score"
doesn't change anything
48 49 50 51 52 53 54 55 56 |
# File 'lib/card/model/save_helper.rb', line 48 def ensure_card name_or_args, content_or_args=nil args = standardize_args name_or_args, content_or_args name = args.delete(:name) if (card = Card[name]) ensure_attributes card, args else Card.create! args.merge(name: name) end end |
#ensure_card!(name_or_args, content_or_args = nil) ⇒ Object Also known as: ensure!
create if card doesn't exist
updates existing card only if given attributes are different including
the name
For example if a card with name "under_score" exists
then ensure_card "Under Score"
renames it to "Under Score"
63 64 65 66 67 68 69 70 |
# File 'lib/card/model/save_helper.rb', line 63 def ensure_card! name_or_args, content_or_args=nil args = standardize_args name_or_args, content_or_args if (card = Card[args[:name]]) ensure_attributes card, args else Card.create! args end end |
#resolve_name_conflict(args) ⇒ Object
113 114 115 116 117 |
# File 'lib/card/model/save_helper.rb', line 113 def resolve_name_conflict args rename = args.delete :rename_if_conflict return unless rename args[:name] = Card.uniquify_name args[:name], rename end |
#standardize_args(name_or_args, content_or_args) ⇒ Object
Returns args.
89 90 91 92 93 94 95 |
# File 'lib/card/model/save_helper.rb', line 89 def standardize_args name_or_args, content_or_args if name_or_args.is_a?(Hash) name_or_args else add_name name_or_args, content_or_args end end |
#standardize_update_args(content_or_args) ⇒ Object
97 98 99 100 101 102 103 |
# File 'lib/card/model/save_helper.rb', line 97 def standardize_update_args content_or_args if content_or_args.is_a?(String) { content: content_or_args } else content_or_args end end |
#update_card(name, content_or_args) ⇒ Object Also known as: update
18 19 20 21 22 |
# File 'lib/card/model/save_helper.rb', line 18 def update_card name, content_or_args args = standardize_update_args content_or_args resolve_name_conflict args Card[name].update_attributes! args end |
#update_card!(name, content_or_args) ⇒ Object Also known as: update!
78 79 80 81 |
# File 'lib/card/model/save_helper.rb', line 78 def update_card! name, content_or_args args = standardize_update_args content_or_args update_card name, args.reverse_merge(rename_if_conflict: :new) end |