72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
# File 'lib/hal_api/representer/embeds.rb', line 72
def embed(name, options={})
options[:embedded] = true
options[:writeable] = false
options[:if] ||= ->(_a) { id } unless options[:zoom] == :always
if options[:paged]
opts = {
no_curies: true,
item_class: options.delete(:item_class),
url: options.delete(:url),
item_decorator: options.delete(:item_decorator)
}
getter_per = options.delete(:per) || Kaminari.config.default_per_page
options[:getter] ||= ->(*) do
cnt = send(name).count
per = getter_per == :all ? cnt : getter_per
if cnt == 0
items = send(name).page(1).per(Kaminari.config.default_per_page)
elsif cnt <= per
items = Kaminari.paginate_array(send(name)).page(1).per(per)
else
items = send(name).page(1).per(per)
end
HalApi::PagedCollection.new(items, nil, opts.merge(parent: self))
end
options[:decorator] = HalApi::PagedCollection.representer
end
property(name, options)
end
|