Module: Typus::Orm::Mongoid::Search
- Includes:
- Base::Search
- Defined in:
- lib/typus/orm/mongoid/search.rb
Instance Method Summary collapse
- #build_filter_interval(interval, key) ⇒ Object
-
#build_has_many_conditions(key, value) ⇒ Object
TODO: Detect the primary_key for this object.
- #build_search_conditions(key, value) ⇒ Object
Methods included from Base::Search
#build_boolean_conditions, #build_conditions, #build_date_conditions, #build_datetime_conditions, #build_my_joins, #build_string_conditions
Instance Method Details
#build_filter_interval(interval, key) ⇒ Object
34 35 36 |
# File 'lib/typus/orm/mongoid/search.rb', line 34 def build_filter_interval(interval, key) {key.to_sym.gt => interval.first, key.to_sym.lt => interval.last} end |
#build_has_many_conditions(key, value) ⇒ Object
TODO: Detect the primary_key for this object.
39 40 41 |
# File 'lib/typus/orm/mongoid/search.rb', line 39 def build_has_many_conditions(key, value) ["#{key}.id = ?", value] end |
#build_search_conditions(key, value) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/typus/orm/mongoid/search.rb', line 8 def build_search_conditions(key, value) search_fields = typus_search_fields search_fields = search_fields.empty? ? { "name" => "@" } : search_fields search_query = search_fields.map do |key, type| = self split_keys = key.split('.') split_keys[0..-2].each do |split_key| if .responds_to? :relations && .relations[split_key] && .relations[split_key]. = .relations[split_key] else raise "Search key '#{key}' is invalid. #{split_key} is not an embeded document" if . end end field = .fields[split_keys.last] raise "Search key '#{field.name}' is invalid." unless field value = field.serialize(value) if field.type.ancestors.include?(Numeric) {key => value} end {'$or' => search_query} end |