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

Version Path
daengine-0.7.3 app/helpers/digital_assets_helper.rb
daengine-0.7.2 app/helpers/digital_assets_helper.rb
daengine-0.7.1 app/helpers/digital_assets_helper.rb
daengine-0.7 app/helpers/digital_assets_helper.rb
daengine-0.6.23 app/helpers/digital_assets_helper.rb
daengine-0.6.22 app/helpers/digital_assets_helper.rb
daengine-0.6.21 app/helpers/digital_assets_helper.rb
daengine-0.6.20 app/helpers/digital_assets_helper.rb
daengine-0.6.19 app/helpers/digital_assets_helper.rb
daengine-0.6.18 app/helpers/digital_assets_helper.rb
daengine-0.6.17 app/helpers/digital_assets_helper.rb
daengine-0.6.16 app/helpers/digital_assets_helper.rb
daengine-0.6.15 app/helpers/digital_assets_helper.rb
daengine-0.6.14 app/helpers/digital_assets_helper.rb
daengine-0.6.13 app/helpers/digital_assets_helper.rb
daengine-0.6.11 app/helpers/digital_assets_helper.rb
daengine-0.6.10 app/helpers/digital_assets_helper.rb
daengine-0.6.9 app/helpers/digital_assets_helper.rb
daengine-0.6.8 app/helpers/digital_assets_helper.rb
daengine-0.6.5 app/helpers/digital_assets_helper.rb