lib/roar/rails/responder.rb in roar-rails-0.0.11 vs lib/roar/rails/responder.rb in roar-rails-0.0.12

- old
+ new

@@ -1,40 +1,39 @@ module Roar::Rails module ModelMethods private # DISCUSS: move this into a generic namespace as we could need that in Sinatra as well. - def extend_with!(model, representer) - model.extend(representer) + def extend_with!(model, representer) # TODO: rename to #prepare_model. + representer.prepare(model) end - + def prepare_model!(model) - representer = controller.representer_for(format, model, options) - extend_with!(model, representer) + controller.prepare_model_for(format, model, options) end end - + module Responder include ModelMethods - + # DISCUSS: why THE FUCK is options not passed as a method argument but kept as an internal instance variable in the responder? this is something i will never understand about Rails. def display(model, *args) if representer = options.delete(:represent_items_with) render_items_with(model, representer) # convenience API, not recommended since it's missing hypermedia. return super end - - prepare_model!(model) - + + model = prepare_model!(model) + super end - + private def render_items_with(collection, representer) collection.map! do |m| # DISCUSS: i don't like changing the method argument here. extend_with!(m, representer) m.to_hash # FIXME: huh? and what about XML? end end - + include VersionStrategy end end