module Stormpath::Resource::Associations::ClassMethods
Public Instance Methods
create(properties_or_resource, options = {})
click to toggle source
# File lib/stormpath-sdk/resource/associations.rb 50 def create(properties_or_resource, options = {}) 51 resource = case properties_or_resource 52 when Stormpath::Resource::Base 53 properties_or_resource 54 else 55 item_class.new(properties_or_resource, client) 56 end 57 data_store.create(href, resource, item_class, options) 58 end
get(id_or_href, expansion = nil)
click to toggle source
# File lib/stormpath-sdk/resource/associations.rb 62 def get(id_or_href, expansion = nil) 63 item_href = if id_or_href.index '/' 64 id_or_href 65 else 66 "#{href}/#{id_or_href}" 67 end 68 data_store.get_resource( 69 item_href, item_class, (expansion ? expansion.to_query : nil) 70 ) 71 end
has_many(name, options = {}, &block)
click to toggle source
# File lib/stormpath-sdk/resource/associations.rb 34 def has_many(name, options = {}, &block) 35 options[:class_name] ||= name.to_s.singularize 36 item_class = "Stormpath::Resource::#{options[:class_name].to_s.camelize}".constantize 37 property_name = name.to_s.camelize :lower 38 can = Array.wrap(options[:can]) || [] 39 40 define_method(name) do 41 href = options[:href] || get_resource_href_property(property_name) 42 collection_href = "#{tenant.send(name).href}" if options[:delegate] 43 44 Stormpath::Resource::Collection.new( 45 href, item_class, client, collection_href: collection_href 46 ).tap do |collection| 47 48 collection.class_eval do 49 if can.include?(:create) 50 def create(properties_or_resource, options = {}) 51 resource = case properties_or_resource 52 when Stormpath::Resource::Base 53 properties_or_resource 54 else 55 item_class.new(properties_or_resource, client) 56 end 57 data_store.create(href, resource, item_class, options) 58 end 59 end # can.include? :create 60 61 if can.include? :get 62 def get(id_or_href, expansion = nil) 63 item_href = if id_or_href.index '/' 64 id_or_href 65 else 66 "#{href}/#{id_or_href}" 67 end 68 data_store.get_resource( 69 item_href, item_class, (expansion ? expansion.to_query : nil) 70 ) 71 end 72 end # can.include? :get 73 end # collection.class_eval do 74 75 collection.class_eval(&block) if block 76 end # Stormpath::Resource::Collection.new 77 end # define_method(name) 78 end
resource_prop_reader(name, options = {})
click to toggle source
# File lib/stormpath-sdk/resource/associations.rb 22 def resource_prop_reader(name, options = {}) 23 options[:class_name] ||= name 24 resource_class = "Stormpath::Resource::#{options[:class_name].to_s.camelize}".constantize 25 property_name = name.to_s.camelize :lower 26 define_method(name) do 27 get_resource_property property_name, resource_class 28 end 29 end
Also aliased as: has_one, belongs_to