drafts 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,54 @@
1
+ module DraftsManagerMethods
2
+ def self.included base
3
+ base.class_exec do
4
+ extend BaseClassMethods
5
+ end
6
+ end
7
+
8
+ module BaseClassMethods
9
+ def has_drafts
10
+ include DraftsManagerMethods::InstanceMethods
11
+ extend DraftsManagerMethods::ClassMethods
12
+ attr_accessor :draft_id
13
+ attr_accessible :draft_id
14
+ after_create :clear_draft
15
+ end
16
+ end
17
+
18
+ module InstanceMethods
19
+ def save_draft user
20
+ return false unless self.new_record?
21
+ draft = Draft.find_by_id(self.draft_id) || Draft.new
22
+ attrs = self.attributes.clone.delete_if { |key, value| self.class.accessible_attributes.deny?(key) }
23
+ cache_attrs = {}
24
+ attrs.each { |attr, val| cache_attrs[attr + "_cache"] = self.send(attr + "_cache") if self.send(attr).is_a?(CarrierWave::Uploader::Base) }
25
+ draft.data = attrs.merge cache_attrs
26
+ draft.name = self.to_s
27
+ draft.target_type = self.class.name
28
+ draft.user_id = user.id
29
+ res = draft.save
30
+ self.draft_id = draft.id if res
31
+ res
32
+ end
33
+
34
+ private
35
+
36
+ def clear_draft
37
+ draft = Draft.find_by_id self.draft_id
38
+ draft.destroy if draft
39
+ end
40
+ end
41
+
42
+ module ClassMethods
43
+ def from_draft data
44
+ draft = data.is_a?(Draft) ? data : Draft.find(data)
45
+ target = self.new draft.data
46
+ target.draft_id = draft.id
47
+ target
48
+ end
49
+
50
+ def drafts user
51
+ Draft.where(:user_id => user.id, :target_type => self.name)
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,11 @@
1
+ require "lib/drafts_manager"
2
+
3
+ module DraftsManager
4
+
5
+ class Railtie < Rails::Railtie
6
+ initializer "drafts init" do
7
+ ActionView::Base.send :include, DraftsManagerMethods
8
+ end
9
+ end
10
+
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drafts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -19,7 +19,9 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - README
22
+ - lib/drafts/drafts_manager.rb
22
23
  - lib/drafts.rb
24
+ - lib/railtie.rb
23
25
  homepage: http://github.com/lxkuz/draft
24
26
  licenses: []
25
27
  post_install_message: