amount_field_rails3 3.0.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  *.gem
2
2
  .bundle
3
+ .rvmrc
3
4
  Gemfile.lock
4
5
  pkg/*
5
6
  doc
@@ -1,3 +1,8 @@
1
+ == 3.0.1 2011-09-14
2
+
3
+ * Fix issue "ActiveRecord::DangerousAttributeError:configuration="
4
+ (see https://github.com/thomasbaustert/amount_field/issues/1)
5
+
1
6
  == 3.0.0 2011-03-29
2
7
 
3
8
  * Migrate to Rails3
@@ -2,8 +2,11 @@ module AmountField #:nodoc:
2
2
  module ActiveRecord #:nodoc:
3
3
  module Validations
4
4
 
5
+ # Note: Don't use mattr_accessor here because it will define 'def configuration=' too which leads to error
6
+ # "ActiveRecord::DangerousAttributeError:configuration=" in case the AR model has an attribute 'configuration'.
5
7
  @@configuration = {}
6
- mattr_accessor :configuration
8
+ def self.configuration=(c); @@configuration = c; end
9
+ def self.configuration; @@configuration; end
7
10
 
8
11
  def self.included(base) # :nodoc:
9
12
  base.extend ClassMethods
@@ -15,7 +18,7 @@ module AmountField #:nodoc:
15
18
  # code before validates_each is called only once!
16
19
  configuration = attr_names.extract_options!
17
20
 
18
- define_special_setter(attr_names, configuration)
21
+ define_special_setter(attr_names)
19
22
 
20
23
  # the following code defines the callbacks methods that are called on every validation
21
24
  validates_each(attr_names, configuration) do |record, attr_name, value|
@@ -55,7 +58,7 @@ module AmountField #:nodoc:
55
58
 
56
59
  private
57
60
 
58
- def define_special_setter(attr_names, configuration)
61
+ def define_special_setter(attr_names)
59
62
  attr_names.each do |attr_name|
60
63
  class_eval <<-EOV
61
64
  def #{special_method_name(attr_name)}=(value)
@@ -1,3 +1,3 @@
1
1
  module AmountField
2
- VERSION = "3.0.0"
2
+ VERSION = "3.0.1"
3
3
  end
@@ -21,6 +21,11 @@ ActiveRecord::Schema.define(:version => 1) do
21
21
  t.column "stock_price", :decimal, :precision => 12, :scale => 2
22
22
  t.column "float_price", :float
23
23
  end
24
+
25
+ create_table "test_products_with_configuration", :force => true do |t|
26
+ t.column "configuration", :string
27
+ t.column "price", :decimal, :precision => 12, :scale => 2
28
+ end
24
29
  end
25
30
 
26
31
  class ActiveSupport::TestCase
@@ -50,8 +50,7 @@ class ValidationsTest < ActiveSupport::TestCase
50
50
  '1.234.567,89' => 1234567.89
51
51
  }
52
52
  end
53
-
54
-
53
+
55
54
  test "orignal setter accept ruby value if set via new" do
56
55
  product = TestProduct.new(:price => 12.34)
57
56
  assert_in_delta 12.34, product.price, 0.001
@@ -385,5 +384,17 @@ class ValidationsTest < ActiveSupport::TestCase
385
384
  assert p.errors.full_messages.include?("Price is not a number")
386
385
  end
387
386
 
387
+ test "configuration must not interfere with an active record model attribute" do
388
+ class TestProductWithAttributeConfiguration < ActiveRecord::Base
389
+ set_table_name 'test_products_with_configuration'
390
+ validates_amount_format_of :price
391
+ end
392
+ with_locale('de') do
393
+ p = TestProductWithAttributeConfiguration.new(:amount_field_price => "1,23", :configuration => "TEXT")
394
+ assert p.valid?
395
+ assert_equal "TEXT", p.configuration
396
+ end
397
+ end
398
+
388
399
  end
389
400
 
metadata CHANGED
@@ -1,45 +1,35 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: amount_field_rails3
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 3
7
- - 0
8
- - 0
9
- version: 3.0.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.0.1
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Thomas Baustert
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-04-04 00:00:00 +02:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-09-14 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: mysql2
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2161516960 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
31
22
  type: :development
32
- version_requirements: *id001
33
- description: Rails gem/plugin that accepts (amount) values in german or us format like 1.234,56 or 1,234.56
34
- email:
23
+ prerelease: false
24
+ version_requirements: *2161516960
25
+ description: Rails gem/plugin that accepts (amount) values in german or us format
26
+ like 1.234,56 or 1,234.56
27
+ email:
35
28
  - business@thomasbaustert.de
36
29
  executables: []
37
-
38
30
  extensions: []
39
-
40
31
  extra_rdoc_files: []
41
-
42
- files:
32
+ files:
43
33
  - .gitignore
44
34
  - Gemfile
45
35
  - History.txt
@@ -64,39 +54,32 @@ files:
64
54
  - test/test_helper.rb
65
55
  - test/validations_test.rb
66
56
  - uninstall.rb
67
- has_rdoc: true
68
57
  homepage: http://github.com/thomasbaustert/amount_field
69
58
  licenses: []
70
-
71
59
  post_install_message:
72
60
  rdoc_options: []
73
-
74
- require_paths:
61
+ require_paths:
75
62
  - lib
76
- required_ruby_version: !ruby/object:Gem::Requirement
63
+ required_ruby_version: !ruby/object:Gem::Requirement
77
64
  none: false
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- segments:
82
- - 0
83
- version: "0"
84
- required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
70
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- segments:
90
- - 0
91
- version: "0"
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
92
75
  requirements: []
93
-
94
76
  rubyforge_project: amount_field_rails3
95
- rubygems_version: 1.3.7
77
+ rubygems_version: 1.8.6
96
78
  signing_key:
97
79
  specification_version: 3
98
- summary: Rails gem/plugin that accepts (amount) values in german or us format like 1.234,56 or 1,234.56
99
- test_files:
80
+ summary: Rails gem/plugin that accepts (amount) values in german or us format like
81
+ 1.234,56 or 1,234.56
82
+ test_files:
100
83
  - test/form_helper_test.rb
101
84
  - test/form_tag_helper_test.rb
102
85
  - test/models/test_product.rb