module Stormpath::Resource::Associations::ClassMethods

Public Instance Methods

belongs_to(name, options = {})
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
has_one(name, options = {})
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