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
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/hal_api/representer/embeds.rb', line 54 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), per: .delete(:per) || Kaminari.config.default_per_page } [:getter] ||= ->(*) do # set # per page based on default, option value integer, or special :all per = opts.delete(:per) per = self.send(name).count if per == :all PagedCollection.new(self.send(name).page(1).per(per), nil, opts.merge({parent: self})) end [:decorator] = Api::PagedCollectionRepresenter end property(name, ) end |
#embeds(name, options = {}) ⇒ Object
79 80 81 82 83 84 85 |
# File 'lib/hal_api/representer/embeds.rb', line 79 def (name, ={}) [:embedded] = true [:writeable] = false [:if] ||= ->(_a) { id } unless [:zoom] == :always collection(name, ) end |