rails-simple-search 1.1.6 → 1.1.7

Sign up to get free protection for your applications and to get access to all the features.
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.