Class: Tengine::Core::Event::Finder
- Inherits:
-
Object
- Object
- Tengine::Core::Event::Finder
- Includes:
- SelectableAttr::Base
- Defined in:
- lib/tengine/core/event/finder.rb
Constant Summary collapse
- ATTRIBUTE_NAMES =
[ :event_type_name, :key, :source_name, :occurred_at_start, :occurred_at_end, :level_ids, :confirmed, :sender_name, :properties, :refresh_interval, # 更新間隔 ].freeze
Instance Method Summary collapse
- #attributes ⇒ Object
-
#default_level_ids ⇒ Object
デフォルトでは通知レベルがすべて選択された状態にする.
-
#initialize(attrs = {}) ⇒ Finder
constructor
A new instance of Finder.
- #paginate(page = nil) ⇒ Object
- #scope(criteria) ⇒ Object
Constructor Details
#initialize(attrs = {}) ⇒ Finder
Returns a new instance of Finder.
26 27 28 29 30 31 32 33 |
# File 'lib/tengine/core/event/finder.rb', line 26 def initialize(attrs = {}) attrs = { :level_ids => default_level_ids }.update(attrs || {}) attrs.each do |attr, v| send("#{attr}=", v) unless v.blank? end end |
Instance Method Details
#attributes ⇒ Object
35 36 37 |
# File 'lib/tengine/core/event/finder.rb', line 35 def attributes ATTRIBUTE_NAMES.inject({}){|d, name| d[name] = send(name); d} end |
#default_level_ids ⇒ Object
デフォルトでは通知レベルがすべて選択された状態にする
40 41 42 43 44 45 46 |
# File 'lib/tengine/core/event/finder.rb', line 40 def default_level_ids result = [] Tengine::Core::Event.level_entries.each do |entry| result << entry.id end return result end |
#paginate(page = nil) ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/tengine/core/event/finder.rb', line 48 def paginate(page = nil) result = scope(Tengine::Core::Event) if page || result.respond_to?(:page) result = result.page(page) end result end |
#scope(criteria) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/tengine/core/event/finder.rb', line 56 def scope(criteria) result = criteria result = result.where(:event_type_name => str_or_regexp(event_type_name)) if event_type_name result = result.where(:key => key) if key result = result.where(:source_name => str_or_regexp(source_name)) if source_name result = result.where(:occurred_at.gte => occurred_at_start) if occurred_at_start result = result.where(:occurred_at.lte => occurred_at_end) if occurred_at_end result = result.any_in(:level => level_ids) if level_ids result = result.where(:confirmed => confirmed) if confirmed result = result.where(:sender_name => str_or_regexp(sender_name)) if sender_name result = result.where(:properties => properties) if properties # ソート result = result.desc(:occurred_at) result end |