Sha256: ea71200b0273b19c99b8cafd3dfc955e83849359f7db6ea49ae870905acdc395
Contents?: true
Size: 1.14 KB
Versions: 1
Compression:
Stored size: 1.14 KB
Contents
class RestModel class Relation module Response def to_resource(parent) included = parent.__send__(name) return {} unless visible?(parent) and included {name => resource_from_included(included)} end def to_relation(parent) {rel: name, href: href(parent)} if resource_id(parent) end private def resource_from_included(included) options = {root: false} one? ? included.resource(options) : included.map {|r| r.resource(options)} end def href(parent) if options[:href] parent.instance_eval(&options[:href]) else host = "#{RestModel::Configuration.host}" has? ? "#{host}/#{parent.class.resource_name}/#{resource_id(parent)}/#{name}" : "#{host}/#{name.to_s.pluralize}/#{resource_id(parent)}" end end def resource_id(parent) if has? parent.send(parent.class.id_key.name) else options[:resource_id] ? parent.instance_eval(&options[:resource_id]) : parent.__send__("#{self.name}_id") end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rest_model-0.1.15 | lib/rest_model/key/relation/response.rb |