validates_timeliness 3.0.0 → 3.0.1

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,6 @@
1
+ = 3.0.1 [2010-11-02]
2
+ * Generate timeliness write methods in an included module to allow overriding in model class (josevalim)
3
+
1
4
  = 3.0.0 [2010-10-18]
2
5
  * Rails 3 and ActiveModel compatibility
3
6
  * Uses ActiveModel::EachValidator as validator base class.
@@ -18,9 +18,9 @@ If you a looking for the old version for Rails 2.x go here[http://github.com/adz
18
18
 
19
19
  * Only Rails date/time validation plugin offering complete validation (See ORM/ODM support)
20
20
 
21
- * Adds extensions to fix Rails date/time select issues
21
+ * Adds extensions to fix Rails date/time select issues (See Extensions)
22
22
 
23
- * Uses extensible date/time parser ({timeliness gem}[http://github.com/adzap/timeliness])
23
+ * Uses extensible date/time parser (Using {timeliness gem}[http://github.com/adzap/timeliness]. See Plugin Parser)
24
24
 
25
25
  * Supports I18n for the error messages
26
26
 
@@ -31,7 +31,7 @@ As plugin (from master)
31
31
 
32
32
  rails plugin install git://github.com/adzap/validates_timeliness.git
33
33
 
34
- As gem (in beta)
34
+ As gem
35
35
 
36
36
  # in Gemfile
37
37
  gem 'validates_timeliness', '~> 3.0.0'
@@ -46,6 +46,8 @@ Then run
46
46
  This creates configuration initializer and locale files. In the initializer, you there are a number of config
47
47
  options to customize the plugin.
48
48
 
49
+ NOTE: You may wish to enable the plugin parser and the extensions to start. Please read those sections first.
50
+
49
51
 
50
52
  == Examples
51
53
 
@@ -175,7 +177,8 @@ You can also use validation options for custom error messages. The following opt
175
177
  :after_message
176
178
  :on_or_after_message
177
179
 
178
- Note: There is no :between_message option. The between error message should be defined using the :on_or_before and :on_or_after messages.
180
+ Note: There is no :between_message option. The between error message should be defined using the
181
+ :on_or_before and :on_or_after messages.
179
182
 
180
183
  It is highly recommended you use the I18n system for error messages.
181
184
 
@@ -254,36 +257,42 @@ To turn them on/off:
254
257
  config.ignore_restriction_errors = true
255
258
 
256
259
 
257
- === Display Invalid Values in Select Helpers
260
+ == Extensions
258
261
 
259
- The plugin offers an extension for ActionView to allowing invalid
260
- date and time values to be redisplayed to the user as feedback, instead of
261
- a blank field which happens by default in Rails. Though the date helpers make this a
262
- pretty rare occurrence, given the select dropdowns for each date/time component, but
263
- it may be something of interest.
262
+ === Strict Parsing for Select Helpers
264
263
 
265
- To activate it, put this in an initializer:
264
+ When using date/time select helpers, the component values are handled by ActiveRecord using
265
+ the Time class to instantiate them into a time value. This means that some invalid dates,
266
+ such as 31st June, are shifted forward and treated as valid. To handle these cases in a strict
267
+ way, you can enable the plugin extension to treat them as invalid dates.
268
+
269
+ To activate it, uncomment this line in the initializer:
266
270
 
267
271
  # in the setup block
268
- config.enable_date_time_select_extension!
272
+ config.enable_multiparameter_extension!
269
273
 
270
274
 
271
- === Strict Parsing for Select Helpers
275
+ === Display Invalid Values in Select Helpers
272
276
 
273
- When using date/time select helpers, the component values are handled by ActiveRecord using
274
- the Time class to instantiate them into a time value. But this mean that some invalid dates,
275
- such as 31st June, are shifted forward and treated as valid. To handle these cases in a strict
276
- way you can enable the plugin handler to treat them as invalid dates.
277
+ The plugin offers an extension for ActionView to allowing invalid date and time values to be
278
+ redisplayed to the user as feedback, instead of a blank field which happens by default in
279
+ Rails. Though the date helpers make this a pretty rare occurrence, given the select dropdowns
280
+ for each date/time component, but it may be something of interest.
277
281
 
278
- To activate it, put this in an initializer:
282
+ To activate it, uncomment this line in the initializer:
279
283
 
280
284
  # in the setup block
281
- config.enable_multiparameter_extension!
285
+ config.enable_date_time_select_extension!
286
+
287
+
288
+ == Contributors
289
+
290
+ To see the generous people who have contributed code, take a look at the {contributors list}[http://github.com/adzap/validates_timeliness/contributors].
282
291
 
283
292
 
284
- == Credits
293
+ == Maintainers
285
294
 
286
- * Adam Meehan (adam.meehan@gmail.com, http://github.com/adzap)
295
+ * {Adam Meehan}[http://github.com/adzap]
287
296
 
288
297
 
289
298
  == License
@@ -42,7 +42,7 @@ module ValidatesTimeliness
42
42
  super
43
43
  end
44
44
  EOV
45
- class_eval(method_body, __FILE__, line)
45
+ generated_timeliness_methods.module_eval(method_body, __FILE__, line)
46
46
  end
47
47
 
48
48
  def define_timeliness_before_type_cast_method(attr_name)
@@ -51,7 +51,11 @@ module ValidatesTimeliness
51
51
  _timeliness_raw_value_for('#{attr_name}')
52
52
  end
53
53
  EOV
54
- class_eval(method_body, __FILE__, line)
54
+ generated_timeliness_methods.module_eval(method_body, __FILE__, line)
55
+ end
56
+
57
+ def generated_timeliness_methods
58
+ @generated_timeliness_methods ||= Module.new.tap { |m| include(m) }
55
59
  end
56
60
  end
57
61
 
@@ -1,3 +1,3 @@
1
1
  module ValidatesTimeliness
2
- VERSION = '3.0.0'
2
+ VERSION = '3.0.1'
3
3
  end
@@ -75,6 +75,13 @@ class Employee < ActiveRecord::Base
75
75
  validates_time :birth_time
76
76
  validates_datetime :birth_datetime
77
77
  define_attribute_methods
78
+
79
+ attr_accessor :redefined_birth_date_called
80
+
81
+ def birth_date=(value)
82
+ self.redefined_birth_date_called = true
83
+ super
84
+ end
78
85
  end
79
86
 
80
87
  Rspec.configure do |c|
@@ -34,6 +34,12 @@ describe ValidatesTimeliness::AttributeMethods do
34
34
  r._timeliness_raw_value_for(:birth_datetime).should == date_string
35
35
  end
36
36
 
37
+ it 'should not overwrite user defined methods' do
38
+ e = Employee.new
39
+ e.birth_date = '2010-01-01'
40
+ e.redefined_birth_date_called.should be_true
41
+ end
42
+
37
43
  context "with plugin parser" do
38
44
  class PersonWithParser
39
45
  include TestModel
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{validates_timeliness}
5
- s.version = "3.0.0"
5
+ s.version = "3.0.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Adam Meehan"]
9
- s.date = %q{2010-10-18}
9
+ s.date = %q{2010-11-02}
10
10
  s.description = %q{Date and time validation plugin for Rails which allows custom formats}
11
11
  s.email = %q{adam.meehan@gmail.com}
12
12
  s.extra_rdoc_files = ["README.rdoc", "CHANGELOG.rdoc", "LICENSE"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_timeliness
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 5
5
5
  prerelease: false
6
6
  segments:
7
7
  - 3
8
8
  - 0
9
- - 0
10
- version: 3.0.0
9
+ - 1
10
+ version: 3.0.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Adam Meehan
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-18 00:00:00 +11:00
18
+ date: 2010-11-02 00:00:00 +11:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency