module LHS::Record::FindBy::ClassMethods
Public Instance Methods
find_by(params = {}, options = nil)
click to toggle source
Fetch some record by parameters
# File lib/lhs/concerns/record/find_by.rb, line 12 def find_by(params = {}, options = nil) _find_by(params, trace!(options)) rescue LHC::NotFound nil end
find_by!(params = {}, options = nil)
click to toggle source
Raise if no record was found
# File lib/lhs/concerns/record/find_by.rb, line 19 def find_by!(params = {}, options = nil) _find_by(params, trace!(options)) end
Private Instance Methods
_find_by(params, options = {})
click to toggle source
# File lib/lhs/concerns/record/find_by.rb, line 25 def _find_by(params, options = {}) raise(LHS::Unprocessable.new, 'Cannot find Record without an ID') if params.any? && params.all? { |_, value| value.blank? } options ||= {} params = params.dup.merge(limit_key(:parameter) => 1).merge(options.fetch(:params, {})) data = request(options.merge(params: params)) if data && data._proxy.is_a?(LHS::Collection) data.first || raise(LHC::NotFound.new('No item was found.', data._request.response)) elsif data data._record.new(data.unwrap_nested_item) end end