Class | ActionWebService::Struct |
In: |
vendor/rails/actionwebservice/lib/action_web_service/struct.rb
|
Parent: | Object |
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.
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.
Creates a structure member with the specified name and type. Generates accessor methods for reading and writing the member value.
# File vendor/rails/actionwebservice/lib/action_web_service/struct.rb, line 46 46: def member(name, type) 47: name = name.to_sym 48: type = ActionWebService::SignatureTypes.canonical_signature_entry({ name => type }, 0) 49: write_inheritable_hash("struct_members", name => type) 50: class_eval "def \#{name}; @\#{name}; end\ndef \#{name}=(value); @\#{name} = value; end\n" 51: end
If a Hash is given as argument to an ActionWebService::Struct constructor, it can contain initial values for the structure member.
# File vendor/rails/actionwebservice/lib/action_web_service/struct.rb, line 25 25: def initialize(values={}) 26: if values.is_a?(Hash) 27: values.map{|k,v| __send__('%s=' % k.to_s, v)} 28: end 29: end
The member with the given name
# File vendor/rails/actionwebservice/lib/action_web_service/struct.rb, line 32 32: def [](name) 33: send(name.to_s) 34: end