Skip to content

Commit e8b9834

Browse files
committed
Separate associations into multiple files
1 parent bb18fc6 commit e8b9834

File tree

4 files changed

+61
-49
lines changed

4 files changed

+61
-49
lines changed

lib/active_model/serializer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require 'active_model/array_serializer'
22
require 'active_model/serializable'
3-
require 'active_model/serializer/associations'
3+
require 'active_model/serializer/association'
44
require 'active_model/serializer/config'
55

66
require 'thread'
Lines changed: 2 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
require 'active_model/default_serializer'
2+
require 'active_model/serializer/association/has_one'
3+
require 'active_model/serializer/association/has_many'
24

35
module ActiveModel
46
class Serializer
@@ -49,54 +51,6 @@ def default_serializer
4951
def build_serializer(object, options = {})
5052
serializer_class(object).new(object, options.merge(self.options))
5153
end
52-
53-
class HasOne < Association
54-
def initialize(name, *args)
55-
super
56-
@root_key = @embedded_key.to_s.pluralize
57-
@key ||= "#{name}_id"
58-
end
59-
60-
def serializer_class(object)
61-
serializer_from_options || serializer_from_object(object) || default_serializer
62-
end
63-
64-
def build_serializer(object, options = {})
65-
options[:_wrap_in_array] = embed_in_root?
66-
super
67-
end
68-
end
69-
70-
class HasMany < Association
71-
def initialize(name, *args)
72-
super
73-
@root_key = @embedded_key
74-
@key ||= "#{name.to_s.singularize}_ids"
75-
end
76-
77-
def serializer_class(object)
78-
if use_array_serializer?
79-
ArraySerializer
80-
else
81-
serializer_from_options
82-
end
83-
end
84-
85-
def options
86-
if use_array_serializer?
87-
{ each_serializer: serializer_from_options }.merge! super
88-
else
89-
super
90-
end
91-
end
92-
93-
private
94-
95-
def use_array_serializer?
96-
!serializer_from_options ||
97-
serializer_from_options && !(serializer_from_options <= ArraySerializer)
98-
end
99-
end
10054
end
10155
end
10256
end
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
module ActiveModel
2+
class Serializer
3+
class Association
4+
class HasMany < Association
5+
def initialize(name, *args)
6+
super
7+
@root_key = @embedded_key
8+
@key ||= "#{name.to_s.singularize}_ids"
9+
end
10+
11+
def serializer_class(object)
12+
if use_array_serializer?
13+
ArraySerializer
14+
else
15+
serializer_from_options
16+
end
17+
end
18+
19+
def options
20+
if use_array_serializer?
21+
{ each_serializer: serializer_from_options }.merge! super
22+
else
23+
super
24+
end
25+
end
26+
27+
private
28+
29+
def use_array_serializer?
30+
!serializer_from_options ||
31+
serializer_from_options && !(serializer_from_options <= ArraySerializer)
32+
end
33+
end
34+
end
35+
end
36+
end
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
module ActiveModel
2+
class Serializer
3+
class Association
4+
class HasOne < Association
5+
def initialize(name, *args)
6+
super
7+
@root_key = @embedded_key.to_s.pluralize
8+
@key ||= "#{name}_id"
9+
end
10+
11+
def serializer_class(object)
12+
serializer_from_options || serializer_from_object(object) || default_serializer
13+
end
14+
15+
def build_serializer(object, options = {})
16+
options[:_wrap_in_array] = embed_in_root?
17+
super
18+
end
19+
end
20+
end
21+
end
22+
end

0 commit comments

Comments
 (0)