Module: Rubiety::HasDraft::InstanceMethods

Defined in:
lib/has_draft.rb

Instance Method Summary collapse

Instance Method Details

#before_destroy_draftObject



116
117
# File 'lib/has_draft.rb', line 116

def before_destroy_draft
end

#before_instantiate_draftObject



94
95
# File 'lib/has_draft.rb', line 94

def before_instantiate_draft
end

#before_replace_with_draftObject



106
107
# File 'lib/has_draft.rb', line 106

def before_replace_with_draft
end

#copy_attributes_from_draftObject



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

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



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

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

#destroy_draft!Object



109
110
111
112
113
114
# File 'lib/has_draft.rb', line 109

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

#has_draft?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/has_draft.rb', line 51

def has_draft?
  !self.draft.nil?
end

#instantiate_draftObject



65
66
67
68
69
70
71
72
# File 'lib/has_draft.rb', line 65

def instantiate_draft
  self.draft = self.build_draft
  
  copy_attributes_to_draft
  before_instantiate_draft
  
  self.draft
end

#instantiate_draft!Object



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

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

#replace_with_draft!Object



97
98
99
100
101
102
103
104
# File 'lib/has_draft.rb', line 97

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



55
56
57
58
59
60
61
62
63
# File 'lib/has_draft.rb', line 55

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