dynamic_search 0.1.6 → 0.1.8

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
- SHA1:
3
- metadata.gz: 0bd92fbf6e943b1e7103d631f528bc256f1908c2
4
- data.tar.gz: e625b99742280f234547e6d4984ece01ed830d97
2
+ SHA256:
3
+ metadata.gz: c4907236d9dfc36c9d2c2b6952691a4c8215a3cfe6a892b9c79bde7ca3399651
4
+ data.tar.gz: e4806fe172ab17bb0b208d0ba0a85d3fb3ea2bdd39744ab8c9d60008ade88a2d
5
5
  SHA512:
6
- metadata.gz: 8ade600ac15512d56ab78a93c77aeda6e586d8e8c730f9458b0ba2a1367157419174c44512d19cc9466c6f330a29824762fecb0661e761681717a6e0ee04ee84
7
- data.tar.gz: df5c166699f454040155a4cc797705798136c10a2fbb48fc97c6e0c71781790f2c6e8e7ffd53403637c738ade2d03459239a0993f9d582818b8147fe2577ec7a
6
+ metadata.gz: 38a3ab629070c8382a38e7e3bb0487953aca0e19f7a4da3d7b43bae2243391ec35aa931529d54a72df450bc8d4daa4cadfa49b6eb8cfba8e449e1220b7d6185d
7
+ data.tar.gz: 40d59361d6d914e6ebc2475d580645f5097a472abdf023c3c9874560a6695a00aae80bf53b5bf145d51e7440b7d19c4af664e2783ce9f86fa1b1d5bbdada66be
data/README.md CHANGED
@@ -1,35 +1,8 @@
1
1
  # DynamicSearch
2
- DynamicSearch provides support for multi term searches to your rails models.
2
+ DynamicSearch provides support for multi term searches to your rails models. At the
3
+ moment, I would recommend using at least rails 5.2 or higher for security reasons.
3
4
 
4
- ## Usage
5
- 1. Include the module to any model you want DynamicSearch functionality.
6
- ```ruby
7
- include DynamicSearch
8
- ```
9
-
10
- 2. Customize the search method to your models to specify how your search should work. In
11
- this case, you're telling the search method which columns you want included in your
12
- search. By default, DynamicSearch looks at every column except foreign keys, id,
13
- and timestamps.
14
- ```ruby
15
- def search(search)
16
- super(search, ["first_name", "last_name", "username", "email"])
17
- end
18
- ```
19
-
20
- 3. To use the search you can create a search box form in your view.
21
- ```ruby
22
- <%= form_for :model_name, method: 'get' do |f| %>
23
- <%= f.text_field :search, placeholder: "search" %>
24
- <% end %>
25
- ```
26
- Then in your controller, you can call the search method on your model.
27
- ```ruby
28
- if params.has_key? :search
29
- @results = Model.search(params[:search])
30
- end
31
- ```
32
- From there I normally would paginate the results.
5
+ At the moment, the sql only supports PostgreSQL!
33
6
 
34
7
  ## Installation
35
8
  Add this line to your application's Gemfile:
@@ -40,12 +13,45 @@ gem 'dynamic_search'
40
13
 
41
14
  And then execute:
42
15
  ```bash
43
- $ bundle
16
+ bundle
44
17
  ```
45
18
 
46
19
  Or install it yourself as:
47
20
  ```bash
48
- $ gem install dynamic_search
21
+ gem install dynamic_search
22
+ ```
23
+
24
+ ## Usage
25
+ 1. Include the module to any model you want DynamicSearch functionality.
26
+ ```ruby
27
+ include DynamicSearch
28
+ ```
29
+
30
+ 2. To use the search you can create a search box form in your view.
31
+ ```ruby
32
+ <%= form_for :model_name, method: 'get' do |f| %>
33
+ <%= f.text_field :search, placeholder: "search" %>
34
+ <% end %>
35
+ ```
36
+ Then in your controller, you can call the search method on your model. You could also
37
+ specify the columns you want to search on. If you don't specify columns, DynamicSearch
38
+ will check against all of the columns on your model except foreign keys, id, and timestamps.
39
+
40
+ ```ruby
41
+ columns_array = ["first_name", "last_name", "username", "email"]
42
+ @results = Model.search(params[:search], columns_array)
43
+ ```
44
+ From there I normally would paginate the results with Kaminari or WillPaginate.
45
+
46
+ *Optional*
47
+ Customize the search method in your model to specify how your search should work all the
48
+ time for that model, instead of just one view like above. In this case, you're telling the search method
49
+ which columns you want included in your search every time for this model.
50
+
51
+ ```ruby
52
+ def search(search)
53
+ super(search, ["first_name", "last_name", "username", "email"])
54
+ end
49
55
  ```
50
56
 
51
57
  ## Contributing
@@ -21,14 +21,12 @@ module DynamicSearch
21
21
  params = {}
22
22
  sql = []
23
23
 
24
- search.split.each_with_index do |s, i|
25
- params["first#{i}".to_sym] = "#{sanitize_sql(s)}%"
26
- params["nth#{i}".to_sym] = "% #{sanitize_sql(s)}%"
24
+ search.split(' ').each_with_index do |s, i|
25
+ params["nth#{i}".to_sym] = "%#{sanitize_sql(s)}%"
27
26
 
28
27
  statements = []
29
28
  for column in columns
30
- statements << "#{column} LIKE :first#{i}"
31
- statements << "#{column} LIKE :nth#{i}"
29
+ statements << "UPPER(CAST(#{column} AS text)) LIKE UPPER(:nth#{i})"
32
30
  end
33
31
 
34
32
  sql << "(#{statements.join(" OR ")})"
@@ -1,3 +1,3 @@
1
1
  module DynamicSearch
2
- VERSION = '0.1.6'
2
+ VERSION = '0.1.8'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamic_search
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Winterberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-19 00:00:00.000000000 Z
11
+ date: 2019-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.2'
19
+ version: '5.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '4.2'
26
+ version: '5.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sqlite3
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -85,8 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  - !ruby/object:Gem::Version
86
86
  version: '0'
87
87
  requirements: []
88
- rubyforge_project:
89
- rubygems_version: 2.6.13
88
+ rubygems_version: 3.0.1
90
89
  signing_key:
91
90
  specification_version: 4
92
91
  summary: DynamicSearch provides support for multi term searches to your rails models.