Module: ActiveRemote::Search::ClassMethods
- Defined in:
- lib/active_remote/search.rb
Instance Method Summary collapse
-
#_active_remote_search_args(args) ⇒ Object
:noapi:.
-
#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.
Instance Method Details
#_active_remote_search_args(args) ⇒ Object
:noapi:
101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/active_remote/search.rb', line 101 def _active_remote_search_args(args) unless args.is_a?(Hash) if args.respond_to?(:to_hash) args = args.to_hash else raise "Invalid parameter: #{args}. First parameter must respond to :to_hash." end end args end |
#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'))
31 32 33 34 35 36 |
# File 'lib/active_remote/search.rb', line 31 def find(args) remote = self.search(args).first raise RemoteRecordNotFound if remote.nil? return 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'))
49 50 51 52 53 |
# File 'lib/active_remote/search.rb', line 49 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.
58 59 60 61 62 |
# File 'lib/active_remote/search.rb', line 58 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'))
75 76 77 78 79 |
# File 'lib/active_remote/search.rb', line 75 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'))
92 93 94 95 96 97 98 |
# File 'lib/active_remote/search.rb', line 92 def search(args) args = _active_remote_search_args(args) remote = self.new remote._active_remote_search(args) remote.serialize_records end |