active_session 0.0.4 → 0.0.5

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.
@@ -1,3 +1,3 @@
1
1
  module ActiveSession
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -9,6 +9,7 @@ module ActiveSession
9
9
  foreign_key = options.fetch(:foreign_key, "#{name}_id").to_sym
10
10
  primary_key = options.fetch(:primary_key, "id").to_sym
11
11
  finder_method = options.fetch(:finder_method, "find_for_authentication").to_sym
12
+ persists = options.fetch(:persists, foreign_key).to_sym
12
13
 
13
14
  extend ActiveModel::Naming
14
15
  include ActiveModel::AttributeMethods
@@ -41,18 +42,40 @@ module ActiveSession
41
42
  remove_instance_variable("@#{name}") if instance_variable_defined?("@#{name}")
42
43
  @attributes[:#{foreign_key}] = model_id
43
44
  end
45
+ END
44
46
 
45
- def persisted?
46
- @store[:#{foreign_key}].present? and @store[:#{foreign_key}] == #{foreign_key}
47
- end
47
+ persists(persists)
48
+ end
48
49
 
49
- def destroy
50
- persisted? && @store.delete(:#{foreign_key}) && true
51
- end
50
+ private
52
51
 
53
- def save
54
- valid? && (@store[:#{foreign_key}] = #{foreign_key}) && true
55
- end
56
- END
52
+ def persists(key)
53
+ if key
54
+ instance_eval <<-END, __FILE__, __LINE__ + 1
55
+ def find(store)
56
+ new(store, :#{key} => store[:#{key}])
57
+ end
58
+ END
59
+
60
+ class_eval <<-END, __FILE__, __LINE__ + 1
61
+ def persisted?
62
+ @store[:#{key}].present? and @store[:#{key}] == #{key}
63
+ end
64
+
65
+ def destroy
66
+ persisted? && @store.delete(:#{key}) && true
67
+ end
68
+
69
+ def save
70
+ valid? && (@store[:#{key}] = #{key}) && true
71
+ end
72
+ END
73
+ else
74
+ class_eval <<-END, __FILE__, __LINE__ + 1
75
+ def persisted?
76
+ false
77
+ end
78
+ END
79
+ end
57
80
  end
58
81
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_session
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ date: 2011-10-19 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
17
- requirement: &16721260 !ruby/object:Gem::Requirement
17
+ requirement: &21168040 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 3.1.1
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *16721260
25
+ version_requirements: *21168040
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activesupport
28
- requirement: &16720720 !ruby/object:Gem::Requirement
28
+ requirement: &21167500 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: 3.1.1
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *16720720
36
+ version_requirements: *21167500
37
37
  description: ActiveModel session
38
38
  email:
39
39
  - qoobaa@gmail.com