Module: HalApi::Representer::Embeds::ClassMethods
- Defined in:
- lib/hal_api/representer/embeds.rb
Overview
Possible values for zoom option in the embed representer definition
-
false - will be zoomed only if in the root doc and in the zoom param
-
true - zoomed in root doc if no zoom_param, or if included in zoom_param
-
always - zoomed no matter what is in zoom param, and even if in embed
Instance Method Summary collapse
Instance Method Details
#embed(name, options = {}) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/hal_api/representer/embeds.rb', line 82 def (name, ={}) [:embedded] = true [:writeable] = false [:if] ||= ->(_a) { id } unless [:zoom] == :always if [:paged] opts = { no_curies: true, item_class: .delete(:item_class), url: .delete(:url), item_decorator: .delete(:item_decorator) } getter_per = .delete(:per) || Kaminari.config.default_per_page [:getter] ||= ->(*) do cnt = send(name).count per = getter_per == :all ? cnt : getter_per if 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 [:decorator] = HalApi::PagedCollection.representer end property(name, ) end |
#embeds(name, options = {}) ⇒ Object
111 112 113 114 115 116 117 |
# File 'lib/hal_api/representer/embeds.rb', line 111 def (name, ={}) [:embedded] = true [:writeable] = false [:if] ||= ->(_a) { id } unless [:zoom] == :always collection(name, ) end |