rails-simple-search 1.1.6 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 488dab542ff2bca0321fe73926c608d634a90b91
4
- data.tar.gz: f38088dc455a4c4ad6080904863f6bc501f6f0e0
3
+ metadata.gz: 97179f7794faea8e0aa2b3100b6be0b40a4a5399
4
+ data.tar.gz: 130d3e3862abe9fb11672c29d24be6524ede71ca
5
5
  SHA512:
6
- metadata.gz: 2bd662eb8cc806a48768eaeb3e6a230fad92ebbc1367edf7dbda840aff12726bc8b23f0b5c12bb027889dbba2119b569db00a868a1c11340973cd09e67fd85e1
7
- data.tar.gz: a1e4694ff5e1404eaf0b58a63bf7864641df43fabd202cbc58348d2335f1596df9cac2db3e24fdc7be29efb05dd40385b57474f9dbce1aea8df83bf054ed49e9
6
+ metadata.gz: 11ae23b082afd9ee052d85fa5f424c56a219309141ad34f442bf2e679028fff79fcdc1215b2efb64d1cbe26574887469c788e2164ac003aca6acc7fe067ca43b
7
+ data.tar.gz: 403a0bdfb53d743e6d89c9594f763123049de37eb7e76ddc1b86da8c9fee7bd116d1827e7be0ab3f50fd418d7f26d4c02fcabae4ba4ee67537d7a5420a3e2fd2
@@ -24,6 +24,15 @@ module RailsSimpleSearch
24
24
  subclass.send(:include, RailsSimpleSearch::FixModelName)
25
25
  end
26
26
 
27
+ def self.pre_process(model_name, &procedure)
28
+ @pre_processors ||= {}
29
+ @pre_processors[model_name] = procedure
30
+ end
31
+
32
+ def self.pre_processor(model_name)
33
+ @pre_processors[model_name]
34
+ end
35
+
27
36
  def initialize(model_class, criteria={}, config={})
28
37
  @criteria = sanitize_criteria(criteria)
29
38
  @config = DEFAULT_CONFIG.merge(config)
@@ -51,6 +60,16 @@ module RailsSimpleSearch
51
60
  @criteria.merge!(h)
52
61
  end
53
62
 
63
+ def remove_criteria(key)
64
+ value = @criteria[key]
65
+ @criteria.delete(key)
66
+ value
67
+ end
68
+
69
+ def append_criteria(key, value)
70
+ @criteria[key] = value
71
+ end
72
+
54
73
  private
55
74
 
56
75
  def method_missing(method, *args)
@@ -6,17 +6,11 @@ module RailsSimpleSearch
6
6
  @joins = {}
7
7
  end
8
8
 
9
- def conditions
10
- run_criteria
11
- @conditions
12
- end
13
-
14
- def joins
15
- run_criteria
16
- @joins_str
17
- end
18
-
19
9
  def run
10
+ if pre_processor = self.class.pre_processor(@model_class.to_s)
11
+ instance_eval(&pre_processor)
12
+ end
13
+
20
14
  run_criteria
21
15
 
22
16
  query = @model_class.joins(@joins_str)
@@ -48,7 +42,6 @@ module RailsSimpleSearch
48
42
  end
49
43
 
50
44
  def run_criteria
51
- return unless @conditions.nil?
52
45
  @condition_group = ConditionGroup.new
53
46
  @condition_group.set_relation(:and)
54
47
 
@@ -67,7 +60,6 @@ module RailsSimpleSearch
67
60
  table = base_class.table_name
68
61
  key = "#{table}.#{field}"
69
62
 
70
- @conditions ||= []
71
63
  column = base_class.columns_hash[field.to_s]
72
64
  return nil unless column
73
65
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-simple-search
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yi Zhang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-28 00:00:00.000000000 Z
11
+ date: 2017-08-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: rails-simple-search is a light and easy to use gem. It could help developers
14
14
  quickly build a search page.