Module: ActiveRemote::Search::ClassMethods
- Defined in:
- lib/active_remote/search.rb
Instance Method Summary collapse
- 
  
    
      #find(args)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Tries to load the first record; if it fails, an exception is raised. 
- 
  
    
      #first_or_create(attributes)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Tries to load the first record; if it fails, then create is called with the same arguments. 
- 
  
    
      #first_or_create!(attributes)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Tries to load the first record; if it fails, then create! is called with the same arguments. 
- 
  
    
      #first_or_initialize(attributes)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Tries to load the first record; if it fails, then a new record is initialized with the same arguments. 
- 
  
    
      #search(args)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Searches for records with the given arguments. 
- 
  
    
      #validate_search_args!(args)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Validates the given args to ensure they are compatible Search args must be a hash or respond to to_hash. 
Instance Method Details
#find(args) ⇒ Object
Tries to load the first record; if it fails, an exception is raised.
Examples
# A single hash
Tag.find(:guid => 'foo')
# Active remote object
Tag.find(Tag.new(:guid => 'foo'))
# Protobuf object
Tag.find(Generic::Remote::TagRequest.new(:guid => 'foo'))
| 27 28 29 30 31 32 | # File 'lib/active_remote/search.rb', line 27 def find(args) remote = self.search(args).first raise RemoteRecordNotFound, self if remote.nil? remote end | 
#first_or_create(attributes) ⇒ Object
Tries to load the first record; if it fails, then create is called with the same arguments.
Examples
# A single hash
Tag.first_or_create(:name => 'foo')
# Protobuf object
Tag.first_or_create(Generic::Remote::TagRequest.new(:name => 'foo'))
| 45 46 47 48 49 | # File 'lib/active_remote/search.rb', line 45 def first_or_create(attributes) remote = self.search(attributes).first remote ||= self.create(attributes) remote end | 
#first_or_create!(attributes) ⇒ Object
Tries to load the first record; if it fails, then create! is called with the same arguments.
| 54 55 56 57 58 | # File 'lib/active_remote/search.rb', line 54 def first_or_create!(attributes) remote = self.search(attributes).first remote ||= self.create!(attributes) remote end | 
#first_or_initialize(attributes) ⇒ Object
Tries to load the first record; if it fails, then a new record is initialized with the same arguments.
Examples
# A single hash
Tag.first_or_initialize(:name => 'foo')
# Protobuf object
Tag.first_or_initialize(Generic::Remote::TagRequest.new(:name => 'foo'))
| 71 72 73 74 75 | # File 'lib/active_remote/search.rb', line 71 def first_or_initialize(attributes) remote = self.search(attributes).first remote ||= self.new(attributes) remote end | 
#search(args) ⇒ Object
Searches for records with the given arguments. Returns a collection of Active Remote objects.
Examples
# A single hash
Tag.search(:name => 'foo')
# Protobuf object
Tag.search(Generic::Remote::TagRequest.new(:name => 'foo'))
| 88 89 90 91 92 93 94 95 96 97 98 | # File 'lib/active_remote/search.rb', line 88 def search(args) args = validate_search_args!(args) response = remote_call(:search, args) if response.respond_to?(:records) serialize_records(response.records) else response end end | 
#validate_search_args!(args) ⇒ Object
Validates the given args to ensure they are compatible Search args must be a hash or respond to to_hash
| 103 104 105 106 107 108 109 110 111 112 113 | # File 'lib/active_remote/search.rb', line 103 def validate_search_args!(args) unless args.is_a?(Hash) if args.respond_to?(:to_hash) args = args.to_hash else raise "Invalid parameter: #{args}. Search args must respond to :to_hash." end end args end |