Module: Card::Director::CardClass

Included in:
Card
Defined in:
card/lib/card/director/card_class.rb

Overview

director-related Card class methods

Instance Method Summary collapse

Instance Method Details

#create(opts) ⇒ Object

[View source]

11
12
13
14
15
# File 'card/lib/card/director/card_class.rb', line 11

def create opts
  card = new opts
  card.save
  card
end

#create!(opts) ⇒ Object

[View source]

5
6
7
8
9
# File 'card/lib/card/director/card_class.rb', line 5

def create! opts
  card = new opts
  card.save!
  card
end

#ensure(opts) ⇒ Object

The ensure methods are use to make sure a card exists and can be used when you’re unsure as to whether it already does. It’s arguments are largely the same as those used by Card#create and @card.update with the important exception of conflict.

The conflict argument takes one of three values:

  • defer: let existing card stay as it is
  • default: update existing card if it is “pristine” (meaning it has not been edited by anyone other than Decko Bot)
  • override: update existing card

If the options specify a codename and the name is already in use, things get a little more involved. (Note: we MUST ensure that a card with the codename exists!)

If the conflict setting is “defer”:

  • if the codename is NOT already in use, we create a new card with an altered name
  • otherwise we do nothing.

If the conflict setting is “default”:

  • if the codename is NOT already in use:
    • if the card using the name we want is pristine, we update that card
    • otherwise we create a new card with an altered name
  • if the codename IS already in use
    • if the card with the codename is pristine, we update everything but the name (which is used by another card)
    • otherwise we do nothing

If the conflict setting is “override”:

  • if the codename is NOT already in use, we update the existing card with the name.
  • otherwise we alter the card withe the conflicting name and update the card with the codename.
[View source]

54
55
56
# File 'card/lib/card/director/card_class.rb', line 54

def ensure opts
  ensuring opts, &:save_if_needed
end

#ensure!(opts) ⇒ Object

[View source]

58
59
60
# File 'card/lib/card/director/card_class.rb', line 58

def ensure! opts
  ensuring opts, &:save_if_needed!
end