Module: HasDraft::InstanceMethods

Defined in:
lib/has_draft.rb

Instance Method Summary collapse

Instance Method Details

#before_destroy_draftObject



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

def before_destroy_draft
end

#before_instantiate_draftObject



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

def before_instantiate_draft
end

#before_replace_with_draftObject



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

def before_replace_with_draft
end

#copy_attributes_from_draftObject



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

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



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

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

#destroy_draft!Object



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

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

#has_draft?Boolean

Returns:

  • (Boolean)


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

def has_draft?
  !self.draft.nil?
end

#instantiate_draftObject



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

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

#instantiate_draft!Object



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

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

#replace_with_draft!Object



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

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



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

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