Method: Dynamoid::Finders::ClassMethods#method_missing
- Defined in:
- lib/dynamoid/finders.rb
#method_missing(method, *args) ⇒ Dynamoid::Document|Array
Find using exciting method_missing finders attributes. Uses criteria chains under the hood to accomplish this neatness.
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 |
# File 'lib/dynamoid/finders.rb', line 291 def method_missing(method, *args) # Cannot use Symbol#start_with? because it was introduced in Ruby 2.7, but we support Ruby >= 2.3 if method.to_s.start_with?('find') Dynamoid.deprecator.warn("[Dynamoid] .#{method} is deprecated! Call .where instead of") finder = method.to_s.split('_by_').first attributes = method.to_s.split('_by_').last.split('_and_') chain = Dynamoid::Criteria::Chain.new(self) chain = chain.where({}.tap { |h| attributes.each_with_index { |attr, index| h[attr.to_sym] = args[index] } }) if finder.include?('all') chain.all else chain.first end else super end end |