custom_fields 1.0.0.beta.23 → 1.0.0.beta.24

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.
@@ -5,23 +5,7 @@ module CustomFields
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  included do
8
- register_type :boolean
9
- end
10
-
11
- module InstanceMethods
12
-
13
- def apply_boolean_type(klass)
14
-
15
- klass.class_eval <<-EOF
16
- alias :#{self.safe_alias}= :#{self._name}=
17
-
18
- def #{self.safe_alias}
19
- ::Boolean.set(self.send(:#{self._name}))
20
- end
21
- EOF
22
-
23
- end
24
-
8
+ register_type :boolean, ::Boolean
25
9
  end
26
10
 
27
11
  end
@@ -75,11 +75,11 @@ module CustomFields
75
75
 
76
76
  def collection(reload_embedded = false)
77
77
  if self.target_klass.embedded?
78
- parent_target_klass = self.target_klass._parent
78
+ parent_target = self.target_klass._parent
79
79
 
80
- parent_target_klass = parent_target_klass.reload if reload_embedded
80
+ parent_target = parent_target.reload if reload_embedded
81
81
 
82
- parent_target_klass.send(self.target_klass.association_name)
82
+ parent_target.send(self.target_klass.association_name)
83
83
  else
84
84
  self.target_klass
85
85
  end
@@ -23,18 +23,20 @@ module CustomFields
23
23
  end
24
24
 
25
25
  def persist
26
- (self.previous_state[:ids] - self.ids).each do |id|
27
- self.set_foreign_key_and_position(id, nil)
26
+ (self.previous_state[:values] - self.values).each do |object|
27
+ self.set_foreign_key_and_position(object, nil)
28
28
  end
29
29
 
30
- self.ids.each_with_index do |id, position|
31
- self.set_foreign_key_and_position(id, self.parent._id, position)
30
+ self.values.each_with_index do |object, position|
31
+ self.set_foreign_key_and_position(object, self.parent._id, position)
32
32
  end
33
33
 
34
34
  if self.target_klass.embedded?
35
35
  self.target_klass._parent.save!(:validate => false)
36
36
  end
37
37
 
38
+ self.reorder # update positions in the internal collection (self.values)
39
+
38
40
  self.reset_previous_state
39
41
  end
40
42
 
@@ -52,29 +54,35 @@ module CustomFields
52
54
  end
53
55
 
54
56
  def reload
55
- self.update(self.reverse_collection)
57
+ self.update(self.reverse_collection(true))
56
58
 
57
59
  self.reset_previous_state
58
60
  end
59
61
 
60
62
  protected
61
63
 
62
- def reverse_collection
63
- self.collection.where(self.reverse_lookup_field => self.parent._id).order_by([[:"#{self.reverse_lookup_field}_position", :asc]])
64
+ def reverse_collection(reload = false)
65
+ self.collection(reload).where(self.reverse_lookup_field => self.parent._id).order_by([[:"#{self.reverse_lookup_field}_position", :asc]])
66
+ end
67
+
68
+ def reorder
69
+ self.values.sort! { |a, b| a.send(:"#{self.reverse_lookup_field}_position") <=> b.send(:"#{self.reverse_lookup_field}_position") }
64
70
  end
65
71
 
66
- def set_foreign_key_and_position(object_id, value, position = nil)
72
+ def set_foreign_key_and_position(object, value, position = nil)
73
+ objects = [object]
74
+
67
75
  if self.target_klass.embedded?
68
- object = self.collection.find(object_id)
69
- else
70
- object = self.previous_state[:values].detect { |o| o._id == object_id }
76
+ # Fixme (Did): objects in self.values are different from the ones in self.collection
77
+ objects << self.collection.find(object._id)
71
78
  end
72
79
 
73
- object.send("#{self.reverse_lookup_field}=".to_sym, value)
74
-
75
- object.send("#{self.reverse_lookup_field}_position=".to_sym, position)
80
+ objects.each do |o|
81
+ o.send("#{self.reverse_lookup_field}=".to_sym, value)
82
+ o.send("#{self.reverse_lookup_field}_position=".to_sym, position)
83
+ end
76
84
 
77
- if self.target_klass.embedded?
85
+ unless self.target_klass.embedded?
78
86
  object.save(:validate => false)
79
87
  end
80
88
  end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module CustomFields
3
- VERSION = "1.0.0.beta.23"
3
+ VERSION = "1.0.0.beta.24"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,15 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: custom_fields
3
3
  version: !ruby/object:Gem::Version
4
- hash: 62196397
5
4
  prerelease: 6
6
- segments:
7
- - 1
8
- - 0
9
- - 0
10
- - beta
11
- - 23
12
- version: 1.0.0.beta.23
5
+ version: 1.0.0.beta.24
13
6
  platform: ruby
14
7
  authors:
15
8
  - Didier Lafforgue
@@ -17,40 +10,30 @@ autorequire:
17
10
  bindir: bin
18
11
  cert_chain: []
19
12
 
20
- date: 2011-08-17 00:00:00 Z
13
+ date: 2011-08-25 00:00:00 Z
21
14
  dependencies:
22
15
  - !ruby/object:Gem::Dependency
23
16
  name: mongoid
24
- prerelease: false
25
- type: :runtime
26
- version_requirements: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &id001 !ruby/object:Gem::Requirement
27
18
  none: false
28
19
  requirements:
29
20
  - - "="
30
21
  - !ruby/object:Gem::Version
31
- hash: 11
32
- segments:
33
- - 2
34
- - 0
35
- - 2
36
22
  version: 2.0.2
37
- requirement: *id001
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *id001
38
26
  - !ruby/object:Gem::Dependency
39
27
  name: activesupport
40
- prerelease: false
41
- type: :runtime
42
- version_requirements: &id002 !ruby/object:Gem::Requirement
28
+ requirement: &id002 !ruby/object:Gem::Requirement
43
29
  none: false
44
30
  requirements:
45
31
  - - ~>
46
32
  - !ruby/object:Gem::Version
47
- hash: 21
48
- segments:
49
- - 3
50
- - 0
51
- - 9
52
33
  version: 3.0.9
53
- requirement: *id002
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *id002
54
37
  description: Manage custom fields to a mongoid document or a collection. This module is one of the core features we implemented in our custom cms named Locomotive.
55
38
  email:
56
39
  - didier@nocoffee.fr
@@ -102,7 +85,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
85
  requirements:
103
86
  - - ">="
104
87
  - !ruby/object:Gem::Version
105
- hash: 3
88
+ hash: -3936643888107415339
106
89
  segments:
107
90
  - 0
108
91
  version: "0"
@@ -111,11 +94,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
94
  requirements:
112
95
  - - ">="
113
96
  - !ruby/object:Gem::Version
114
- hash: 23
115
- segments:
116
- - 1
117
- - 3
118
- - 6
119
97
  version: 1.3.6
120
98
  requirements: []
121
99