# frozen_string_literal: true module FmRest module Spyke module Model module URI extend ::ActiveSupport::Concern included do # Make the layout setting inheritable class_attribute :_layout, instance_predicate: false class << self protected :_layout end end class_methods do # Accessor for FM layout (user for building request URIs). # # @param layout [String] The FM layout to connect this class to # # @return [String] The current layout if manually set, or the name of # the class otherwise # def layout(layout = nil) self._layout = layout.dup.to_s.freeze if layout self._layout || model_name.name end # Spyke override -- Extends `uri` to default to FM Data's URI schema # def uri(uri_template = nil) if @uri.nil? && uri_template.nil? return FmRest::V1.record_path(layout) + "(/:#{primary_key})" end super end end end end end end