Module: HasDraft::InstanceMethods

Defined in:
lib/has_draft.rb

Instance Method Summary collapse

Instance Method Details

#before_destroy_draftObject



122
123
# File 'lib/has_draft.rb', line 122

def before_destroy_draft
end

#before_instantiate_draftObject



100
101
# File 'lib/has_draft.rb', line 100

def before_instantiate_draft
end

#before_replace_with_draftObject



112
113
# File 'lib/has_draft.rb', line 112

def before_replace_with_draft
end

#copy_attributes_from_draftObject



93
94
95
96
97
98
# File 'lib/has_draft.rb', line 93

def copy_attributes_from_draft
  self.class.draft_columns.each do |attribute|
    self.send("#{attribute}=", self.draft.send(attribute))
  end
  self
end

#copy_attributes_to_draftObject



86
87
88
89
90
91
# File 'lib/has_draft.rb', line 86

def copy_attributes_to_draft
  self.class.draft_columns.each do |attribute|
    self.draft.send("#{attribute}=", send(attribute))
  end
  self
end

#destroy_draft!Object



115
116
117
118
119
120
# File 'lib/has_draft.rb', line 115

def destroy_draft!
  before_destroy_draft
  
  self.draft.destroy if self.draft
  self.draft(true)
end

#has_draft?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/has_draft.rb', line 57

def has_draft?
  !self.draft.nil?
end

#instantiate_draftObject



71
72
73
74
75
76
77
78
# File 'lib/has_draft.rb', line 71

def instantiate_draft
  self.build_draft
  
  copy_attributes_to_draft
  before_instantiate_draft
  
  self.draft.tap(&:save)
end

#instantiate_draft!Object



80
81
82
83
84
# File 'lib/has_draft.rb', line 80

def instantiate_draft!
  instantiate_draft do |draft|
    draft.save unless self.new_record?
  end
end

#replace_with_draft!Object



103
104
105
106
107
108
109
110
# File 'lib/has_draft.rb', line 103

def replace_with_draft!
  copy_attributes_from_draft
  
  before_replace_with_draft
  
  self.save unless self.new_record?
  self
end

#save_to_draft(perform_validation = true) ⇒ Object



61
62
63
64
65
66
67
68
69
# File 'lib/has_draft.rb', line 61

def save_to_draft(perform_validation = true)
  return false if perform_validation and !self.valid?
  
  instantiate_draft! unless has_draft?
  copy_attributes_to_draft
  
  self.draft.save(perform_validation)
  self.reload
end