Sha256: af71a79d935be8e16c997e0403596959af720ad1c096632f476ecb81a7087e8d
Contents?: true
Size: 1.09 KB
Versions: 25
Compression:
Stored size: 1.09 KB
Contents
module DigitalAssetsHelper def search_da(params) digital_assets = [] # loop thru each parameter that matches one of the method signatures # x_is for singular, x_in for arrays, x_since for dates digital_assets = params.keys.select do |pk| DigitalAsset.respond_to?("#{pk}_is".to_sym) or DigitalAsset.respond_to?("#{pk}_in".to_sym) or DigitalAsset.respond_to?("#{pk}_since".to_sym) end.reduce(DigitalAsset) do |sum, key| # for each key, call the 'named query' method with the value given and chain... method = case when DigitalAsset.respond_to?("#{key}_in".to_sym) "#{key}_in".to_sym when DigitalAsset.respond_to?("#{key}_since".to_sym) "#{key}_since".to_sym else "#{key}_is".to_sym end # method = DigitalAsset.respond_to?("#{key}_in".to_sym) ? "#{key}_in".to_sym : "#{key}_is".to_sym sum.send(method, method.to_s.end_with?('in') ? params[key].to_a : params[key]) # should return result of the send call for chaining end digital_assets.respond_to?(:each) ? digital_assets : [] end end
Version data entries
25 entries across 25 versions & 1 rubygems