Module: Kakurenbo::Core

Defined in:
lib/kakurenbo/core.rb

Defined Under Namespace

Modules: Aliases, Callbacks, ClassMethods, Scopes

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base_class) ⇒ Object

Extend ClassMethods after include.



4
5
6
7
8
9
# File 'lib/kakurenbo/core.rb', line 4

def self.included(base_class)
  base_class.extend ClassMethods
  base_class.extend Callbacks
  base_class.extend Scopes
  base_class.extend Aliases
end

Instance Method Details

#delete(options = {:hard => false}) ⇒ Object

delete record.

Parameters:

  • options (Hash) (defaults to: {:hard => false})

    options.

Options Hash (options):

  • hard (Boolean) — default: false

    if hard-delete.



57
58
59
60
61
62
63
64
# File 'lib/kakurenbo/core.rb', line 57

def delete(options = {:hard => false})
  if options[:hard]
    self.class.delete(self.id, options)
  else
    return if new_record? or destroyed?
    update_column kakurenbo_column, current_time_from_proper_timezone
  end
end

#destroy(options = {:hard => false}) ⇒ Boolean, self

destroy record and run callbacks.

Parameters:

  • options (Hash) (defaults to: {:hard => false})

    options.

Options Hash (options):

  • hard (Boolean) — default: false

    if hard-delete.

Returns:

  • (Boolean, self)

    if action is cancelled, return false.



72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/kakurenbo/core.rb', line 72

def destroy(options = {:hard => false})
  if options[:hard]
    with_transaction_returning_status do
      hard_destroy_associated_records
      self.reload.hard_destroy
    end
  else
    return true if destroyed?
    with_transaction_returning_status do
      destroy_at = Time.now
      run_callbacks(:destroy){ update_column kakurenbo_column, destroy_at; self }
    end
  end
end

#destroy!(options = {:hard => false}) ⇒ self

destroy record and run callbacks.

Parameters:

  • options (Hash) (defaults to: {:hard => false})

    options.

Options Hash (options):

  • hard (Boolean) — default: false

    if hard-delete.

Returns:

  • (self)

    self.



93
94
95
# File 'lib/kakurenbo/core.rb', line 93

def destroy!(options = {:hard => false})
  destroy(options) || raise(ActiveRecord::RecordNotDestroyed)
end

#destroy_row(options = {:hard => true}) ⇒ Object



97
98
99
# File 'lib/kakurenbo/core.rb', line 97

def destroy_row(options = {:hard => true})
  relation_for_destroy.delete_all(nil, options)
end

#destroyed?Boolean

Returns:

  • (Boolean)


101
102
103
# File 'lib/kakurenbo/core.rb', line 101

def destroyed?
  !send(kakurenbo_column).nil?
end

#kakurenbo_columnObject



105
106
107
# File 'lib/kakurenbo/core.rb', line 105

def kakurenbo_column
  self.class.kakurenbo_column
end

#persisted?Boolean

Returns:

  • (Boolean)


109
110
111
# File 'lib/kakurenbo/core.rb', line 109

def persisted?
  !new_record?
end

#restore(options = {:recursive => true}) ⇒ Boolean, self

restore record.

Parameters:

  • options (Hash) (defaults to: {:recursive => true})

    options.

Options Hash (options):

  • recursive (Boolean) — default: true

    if restore recursive.

Returns:

  • (Boolean, self)

    if action is cancelled, return false.



119
120
121
122
123
124
125
126
127
128
129
# File 'lib/kakurenbo/core.rb', line 119

def restore(options = {:recursive => true})
  return false unless destroyed?

  with_transaction_returning_status do
    run_callbacks(:restore) do
      restore_associated_records if options[:recursive]
      update_column kakurenbo_column, nil
      self
    end
  end
end

#restore!(options = {:recursive => true}) ⇒ self

restore record.

Parameters:

  • options (Hash) (defaults to: {:recursive => true})

    options.

Options Hash (options):

  • hard (Boolean) — default: false

    if hard-delete.

Returns:

  • (self)

    self.



137
138
139
# File 'lib/kakurenbo/core.rb', line 137

def restore!(options = {:recursive => true})
  restore(options) || raise(ActiveRecord::RecordNotRestored)
end