rails_inheritable_attributes_manager 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,6 @@
1
+ * 0.3.1 *
2
+ Support for AR reflections
3
+
1
4
  * 0.3.0 *
2
5
  Support for inherited nested attributes
3
6
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -0,0 +1,27 @@
1
+ require 'active_record'
2
+
3
+ module ActiveRecord
4
+
5
+ class Base
6
+ class << self
7
+ def create_reflection_with_inheritance_management(macro, name, options, active_record)
8
+ reflection = create_reflection_without_inheritance_management(macro, name, options, active_record)
9
+ alert_subclasses_of_new_reflection(name, reflection)
10
+ reflection
11
+ end
12
+ alias_method_chain :create_reflection, :inheritance_management
13
+
14
+ def alert_subclasses_of_new_reflection(name, reflection)
15
+ subclasses.each do |subclass|
16
+ subclass.superclass_created_new_reflection(name, reflection)
17
+ end
18
+ end
19
+
20
+ def superclass_created_new_reflection(name, reflection)
21
+ return if reflections[name]
22
+ write_inheritable_hash :reflections, name => reflection
23
+ end
24
+ end
25
+ end
26
+
27
+ end
@@ -1,2 +1,5 @@
1
1
  require 'controllers/controller_filters'
2
+
2
3
  require 'models/nested_attributes'
4
+ require 'models/reflection'
5
+
@@ -9,11 +9,6 @@ class AcceptsNestedAttributesForTest < Test::Unit::TestCase
9
9
  initialize_db
10
10
  create_mammals
11
11
  create_legs
12
-
13
- Mammal.class_eval do
14
- has_many :legs
15
- accepts_nested_attributes_for :legs, :reject_if => :all_blank
16
- end
17
12
  end
18
13
 
19
14
  should "not fail if legs association added to re-opened Mammal class" do
@@ -16,6 +16,11 @@ module MammalSample
16
16
  class Beagle < Dog
17
17
  end
18
18
 
19
+ Mammal.class_eval do
20
+ has_many :legs
21
+ accepts_nested_attributes_for :legs, :reject_if => :all_blank
22
+ end
23
+
19
24
  def initialize_db
20
25
  SQLite3::Database.new(DATABASE_NAME)
21
26
  ActiveRecord::Base.establish_connection(:adapter => 'sqlite3',
@@ -31,8 +36,9 @@ module MammalSample
31
36
  end
32
37
 
33
38
  def create_legs
34
- return if Leg.table_exists?
39
+ ActiveRecord::Base.connection.drop_table :legs if Leg.table_exists?
35
40
  ActiveRecord::Base.connection.create_table :legs do |t|
41
+ t.integer :mammal_id
36
42
  t.string :length
37
43
  t.timestamps
38
44
  end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+ require 'models/config'
3
+
4
+ class ReflectionsTest < Test::Unit::TestCase
5
+ include MammalSample
6
+
7
+ context "including associations in #find calls" do
8
+ setup do
9
+ initialize_db
10
+ create_mammals
11
+ create_legs
12
+ end
13
+
14
+ should "not fail if re-opened association is included in #find call" do
15
+ assert_nothing_raised do
16
+ Dog.find :all, :conditions => {:legs => {:length => :reaches_the_ground}}, :include => :legs
17
+ end
18
+ end
19
+
20
+ should "not fail if re-opened association is included in a deeper subclass #find call" do
21
+ assert_nothing_raised do
22
+ Beagle.find :all, :conditions => {:legs => {:length => :reaches_the_ground}}, :include => :legs
23
+ end
24
+ end
25
+ end
26
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_inheritable_attributes_manager
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 0
10
- version: 0.3.0
9
+ - 1
10
+ version: 0.3.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan L. Bell
@@ -19,7 +19,9 @@ date: 2010-08-07 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
22
+ name: shoulda
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
23
25
  none: false
24
26
  requirements:
25
27
  - - "="
@@ -30,12 +32,12 @@ dependencies:
30
32
  - 10
31
33
  - 2
32
34
  version: 2.10.2
33
- requirement: *id001
34
- name: shoulda
35
- prerelease: false
36
35
  type: :development
36
+ version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- version_requirements: &id002 !ruby/object:Gem::Requirement
38
+ name: redgreen
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
39
41
  none: false
40
42
  requirements:
41
43
  - - "="
@@ -46,12 +48,12 @@ dependencies:
46
48
  - 2
47
49
  - 2
48
50
  version: 1.2.2
49
- requirement: *id002
50
- name: redgreen
51
- prerelease: false
52
51
  type: :development
52
+ version_requirements: *id002
53
53
  - !ruby/object:Gem::Dependency
54
- version_requirements: &id003 !ruby/object:Gem::Requirement
54
+ name: actionpack
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
55
57
  none: false
56
58
  requirements:
57
59
  - - ">="
@@ -62,12 +64,12 @@ dependencies:
62
64
  - 3
63
65
  - 0
64
66
  version: 2.3.0
65
- requirement: *id003
66
- name: actionpack
67
- prerelease: false
68
67
  type: :development
68
+ version_requirements: *id003
69
69
  - !ruby/object:Gem::Dependency
70
- version_requirements: &id004 !ruby/object:Gem::Requirement
70
+ name: activerecord
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
71
73
  none: false
72
74
  requirements:
73
75
  - - ">="
@@ -78,10 +80,8 @@ dependencies:
78
80
  - 3
79
81
  - 0
80
82
  version: 2.3.0
81
- requirement: *id004
82
- name: activerecord
83
- prerelease: false
84
83
  type: :development
84
+ version_requirements: *id004
85
85
  description: Enhances Rails inheritable attributes to ensure that changes to super classes are passed on to the subclasses
86
86
  email: ryan.l.bell@gmail.com
87
87
  executables: []
@@ -99,10 +99,12 @@ files:
99
99
  - RELEASE_NOTES
100
100
  - Gemfile
101
101
  - init.rb
102
+ - lib/models/reflection.rb
102
103
  - lib/models/nested_attributes.rb
103
104
  - lib/controllers/controller_filters.rb
104
105
  - lib/rails_inheritable_attributes_manager.rb
105
106
  - tests/models/accepts_nested_attributes_for_test.rb
107
+ - tests/models/reflections_test.rb
106
108
  - tests/models/config.rb
107
109
  - tests/test_helper.rb
108
110
  - tests/controllers/normal_filter_chain_test.rb