activemodel 3.0.0.beta2 → 3.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ *Rails 3.0.0 [beta 3] (April 13th, 2010)*
2
+
3
+ * No changes
4
+
5
+
1
6
  *Rails 3.0.0 [beta 2] (April 1st, 2010)*
2
7
 
3
8
  * #new_record? and #destroyed? were removed from ActiveModel::Lint. Use
@@ -221,7 +221,7 @@ module ActiveModel
221
221
 
222
222
  def alias_attribute(new_name, old_name)
223
223
  attribute_method_matchers.each do |matcher|
224
- module_eval <<-STR, __FILE__, __LINE__+1
224
+ module_eval <<-STR, __FILE__, __LINE__ + 1
225
225
  def #{matcher.method_name(new_name)}(*args)
226
226
  send(:#{matcher.method_name(old_name)}, *args)
227
227
  end
@@ -265,7 +265,7 @@ module ActiveModel
265
265
  else
266
266
  method_name = matcher.method_name(attr_name)
267
267
 
268
- generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__+1
268
+ generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__ + 1
269
269
  if method_defined?(:#{method_name})
270
270
  undef :#{method_name}
271
271
  end
@@ -105,7 +105,7 @@ module ActiveModel
105
105
  end
106
106
 
107
107
  def _define_before_model_callback(klass, callback) #:nodoc:
108
- klass.class_eval <<-CALLBACK, __FILE__, __LINE__
108
+ klass.class_eval <<-CALLBACK, __FILE__, __LINE__ + 1
109
109
  def self.before_#{callback}(*args, &block)
110
110
  set_callback(:#{callback}, :before, *args, &block)
111
111
  end
@@ -113,7 +113,7 @@ module ActiveModel
113
113
  end
114
114
 
115
115
  def _define_around_model_callback(klass, callback) #:nodoc:
116
- klass.class_eval <<-CALLBACK, __FILE__, __LINE__
116
+ klass.class_eval <<-CALLBACK, __FILE__, __LINE__ + 1
117
117
  def self.around_#{callback}(*args, &block)
118
118
  set_callback(:#{callback}, :around, *args, &block)
119
119
  end
@@ -121,7 +121,7 @@ module ActiveModel
121
121
  end
122
122
 
123
123
  def _define_after_model_callback(klass, callback) #:nodoc:
124
- klass.class_eval <<-CALLBACK, __FILE__, __LINE__
124
+ klass.class_eval <<-CALLBACK, __FILE__, __LINE__ + 1
125
125
  def self.after_#{callback}(*args, &block)
126
126
  options = args.extract_options!
127
127
  options[:prepend] = true
@@ -91,17 +91,12 @@ module ActiveModel
91
91
  attribute_method_affix :prefix => 'reset_', :suffix => '!'
92
92
  end
93
93
 
94
- def initialize(*)
95
- @changed_attributes = {}
96
- super
97
- end
98
-
99
94
  # Do any attributes have unsaved changes?
100
95
  # person.changed? # => false
101
96
  # person.name = 'bob'
102
97
  # person.changed? # => true
103
98
  def changed?
104
- !@changed_attributes.empty?
99
+ !changed_attributes.empty?
105
100
  end
106
101
 
107
102
  # List of attributes with unsaved changes.
@@ -109,7 +104,7 @@ module ActiveModel
109
104
  # person.name = 'bob'
110
105
  # person.changed # => ['name']
111
106
  def changed
112
- @changed_attributes.keys
107
+ changed_attributes.keys
113
108
  end
114
109
 
115
110
  # Map of changed attrs => [original value, new value].
@@ -130,19 +125,24 @@ module ActiveModel
130
125
  end
131
126
 
132
127
  private
128
+ # Map of change <tt>attr => original value</tt>.
129
+ def changed_attributes
130
+ @changed_attributes ||= {}
131
+ end
132
+
133
133
  # Handle <tt>*_changed?</tt> for +method_missing+.
134
134
  def attribute_changed?(attr)
135
- @changed_attributes.include?(attr)
135
+ changed_attributes.include?(attr)
136
136
  end
137
137
 
138
138
  # Handle <tt>*_change</tt> for +method_missing+.
139
139
  def attribute_change(attr)
140
- [@changed_attributes[attr], __send__(attr)] if attribute_changed?(attr)
140
+ [changed_attributes[attr], __send__(attr)] if attribute_changed?(attr)
141
141
  end
142
142
 
143
143
  # Handle <tt>*_was</tt> for +method_missing+.
144
144
  def attribute_was(attr)
145
- attribute_changed?(attr) ? @changed_attributes[attr] : __send__(attr)
145
+ attribute_changed?(attr) ? changed_attributes[attr] : __send__(attr)
146
146
  end
147
147
 
148
148
  # Handle <tt>*_will_change!</tt> for +method_missing+.
@@ -153,12 +153,12 @@ module ActiveModel
153
153
  rescue TypeError, NoMethodError
154
154
  end
155
155
 
156
- @changed_attributes[attr] = value
156
+ changed_attributes[attr] = value
157
157
  end
158
158
 
159
159
  # Handle <tt>reset_*!</tt> for +method_missing+.
160
160
  def reset_attribute!(attr)
161
- __send__("#{attr}=", @changed_attributes[attr]) if attribute_changed?(attr)
161
+ __send__("#{attr}=", changed_attributes[attr]) if attribute_changed?(attr)
162
162
  end
163
163
  end
164
164
  end
@@ -1,3 +1,5 @@
1
+ # -*- coding: utf-8 -*-
2
+
1
3
  require 'active_support/core_ext/array/wrap'
2
4
  require 'active_support/core_ext/string/inflections'
3
5
  require 'active_support/core_ext/object/blank'
@@ -140,6 +142,11 @@ module ActiveModel
140
142
  to_a.size
141
143
  end
142
144
 
145
+ # Returns true if there are any errors, false if not.
146
+ def empty?
147
+ all? { |k, v| v && v.empty? }
148
+ end
149
+
143
150
  # Returns an xml formatted representation of the Errors hash.
144
151
  #
145
152
  # p.errors.add(:name, "can't be blank")
@@ -3,7 +3,7 @@ module ActiveModel
3
3
  MAJOR = 3
4
4
  MINOR = 0
5
5
  TINY = 0
6
- BUILD = "beta2"
6
+ BUILD = "beta3"
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, BUILD].join('.')
9
9
  end
metadata CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
6
6
  - 3
7
7
  - 0
8
8
  - 0
9
- - beta2
10
- version: 3.0.0.beta2
9
+ - beta3
10
+ version: 3.0.0.beta3
11
11
  platform: ruby
12
12
  authors:
13
13
  - David Heinemeier Hansson
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-04-01 00:00:00 -07:00
18
+ date: 2010-04-13 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -29,8 +29,8 @@ dependencies:
29
29
  - 3
30
30
  - 0
31
31
  - 0
32
- - beta2
33
- version: 3.0.0.beta2
32
+ - beta3
33
+ version: 3.0.0.beta3
34
34
  type: :runtime
35
35
  version_requirements: *id001
36
36
  description: A toolkit for building modeling frameworks like Active Record and Active Resource. Rich support for attributes, callbacks, validations, observers, serialization, internationalization, and testing.