To send structured types across the wire, derive from ActionWebService::Struct, and use member to declare structure members.
ActionWebService::Struct should be used in method signatures when you want to accept or return structured types that have no Active Record model class representations, or you don‘t want to expose your entire Active Record model to remote callers.
Example
class Person < ActionWebService::Struct
member :id, :int
member :firstnames, [:string]
member :lastname, :string
member :email, :string
end
person = Person.new(:id => 5, :firstname => 'john', :lastname => 'doe')
Active Record model classes are already implicitly supported in method signatures.
- Reloadable::Deprecated
Creates a structure member with the specified name and type. Generates accessor methods for reading and writing the member value.
[ show source ]
# File vendor/rails/actionwebservice/lib/action_web_service/struct.rb, line 49
49: def member(name, type)
50: name = name.to_sym
51: type = ActionWebService::SignatureTypes.canonical_signature_entry({ name => type }, 0)
52: write_inheritable_hash("struct_members", name => type)
53: class_eval "def \#{name}; @\#{name}; end\ndef \#{name}=(value); @\#{name} = value; end\n"
54: end
If a Hash is given as argument to an ActionWebService::Struct constructor, it can contain initial values for the structure member.
[ show source ]
# File vendor/rails/actionwebservice/lib/action_web_service/struct.rb, line 28
28: def initialize(values={})
29: if values.is_a?(Hash)
30: values.map{|k,v| __send__('%s=' % k.to_s, v)}
31: end
32: end
The member with the given name
[ show source ]
# File vendor/rails/actionwebservice/lib/action_web_service/struct.rb, line 35
35: def [](name)
36: send(name.to_s)
37: end
Iterates through each member
[ show source ]
# File vendor/rails/actionwebservice/lib/action_web_service/struct.rb, line 40
40: def each_pair(&block)
41: self.class.members.each do |name, type|
42: yield name, self.__send__(name)
43: end
44: end