Commit 4fbcace
committed
Allow inline polymorphic mappings
This moves the mapping data into the model and allows different models that use the same relationship name to have different mappings.
This is how it used to work:
```ruby
class Picture < ActiveRecord::Base
include PolymorphicIntegerType::Extensions
belongs_to :imageable, polymorphic: true, integer_type: {1 => "Employee", 2 => "Product"}
end
class Employee < ActiveRecord::Base
include PolymorphicIntegerType::Extensions
has_many :pictures, as: :imageable, integer_type: true
end
class Product < ActiveRecord::Base
include PolymorphicIntegerType::Extensions
has_many :pictures, as: :imageable, integer_type: true
end
PolymorphicIntegerType::Mapping.configuration do |config|
config.add :imageable, {1 => "Employee", 2 => "Product" }
end
```
This is how it works now:
```ruby
class Picture < ActiveRecord::Base
include PolymorphicIntegerType::Extensions
belongs_to :imageable, polymorphic: true, integer_type: {1 => "Employee", 2 => "Product"}
end
class Employee < ActiveRecord::Base
include PolymorphicIntegerType::Extensions
has_many :pictures, as: :imageable, integer_type: true
end
class Product < ActiveRecord::Base
include PolymorphicIntegerType::Extensions
has_many :pictures, as: :imageable, integer_type: true
end
```
The old way still works, allowing for smooth migration to the inline style.1 parent 07a247b commit 4fbcace
3 files changed
Lines changed: 97 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
54 | | - | |
| 54 | + | |
55 | 55 | | |
56 | | - | |
| 56 | + | |
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | | - | |
| 61 | + | |
62 | 62 | | |
| 63 | + | |
63 | 64 | | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
64 | 68 | | |
65 | 69 | | |
66 | 70 | | |
| |||
72 | 76 | | |
73 | 77 | | |
74 | 78 | | |
75 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
76 | 82 | | |
77 | 83 | | |
78 | 84 | | |
79 | | - | |
80 | | - | |
81 | | - | |
| 85 | + | |
82 | 86 | | |
83 | 87 | | |
84 | 88 | | |
85 | 89 | | |
86 | 90 | | |
| 91 | + | |
| 92 | + | |
87 | 93 | | |
88 | 94 | | |
89 | 95 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
12 | 18 | | |
13 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
14 | 25 | | |
15 | 26 | | |
16 | 27 | | |
| |||
40 | 51 | | |
41 | 52 | | |
42 | 53 | | |
| 54 | + | |
43 | 55 | | |
44 | 56 | | |
45 | | - | |
46 | | - | |
47 | | - | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
48 | 78 | | |
49 | 79 | | |
50 | 80 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
148 | 148 | | |
149 | 149 | | |
150 | 150 | | |
151 | | - | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
152 | 200 | | |
0 commit comments