Class: Lims::Core::Persistence::Search::CreateSearch
- Includes:
- Actions::Action
- Defined in:
- lib/lims-core/persistence/search/create_search.rb
Constant Summary
Constants included from Actions::Action
Actions::Action::UnrevertableAction
Instance Method Summary collapse
Methods included from Actions::Action
Methods included from SubclassTracker
Instance Method Details
#_call_in_session(session) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/lims-core/persistence/search/create_search.rb', line 18 def _call_in_session(session) # Use the appropriate filter if needed. filter = nil keys = criteria.keys keys.delete("comparison") if criteria.keys.size > 1 if keys.size == 1 keys.first.andtap do |model| filter_class_name = "#{model.capitalize.gsub(/_[^_]*/) { |b| b[1..b.size].capitalize }}Filter" if Persistence::const_defined? filter_class_name filter = Persistence::const_get(filter_class_name).new(:criteria => criteria) end end end filter ||= Persistence::MultiCriteriaFilter.new(:criteria => criteria) search = Persistence::Search.new(:description => description, :model => session.send(model).model, :filter => filter) if search.valid? stored_search = session.search[search.attributes, false].first if stored_search.nil? session << search else search = stored_search end { :search => search, :uuid => session.uuid_for!(search) } else false end end |