make_model_searchable 0.2.1 → 0.3.0

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: 648050f19bf2182a6c7fd2831efb9abe048ed2d5
4
- data.tar.gz: 5051a9071d1da32de090dc14679f4851b537df8a
3
+ metadata.gz: 19fd45656ce822e0504e5a13573d18f0a8830b1d
4
+ data.tar.gz: d47a63dbe9b19e9dd1d12ad15160a0f097908d16
5
5
  SHA512:
6
- metadata.gz: 27a94d9a4c6269ce01dde0496f730dd3a960f525c7c69ec159a77faeee6606964ac6302da1a868265f6ac2f97215c68460cdacd4889bd7655890b796c91c56b3
7
- data.tar.gz: 2ddb9171f8e56db3e78a9cb301ce1bfd560ddf83d169fa400d76de5e5130ad98b82277dff7233c9ee4d0f981ef5fffae8c3ad6f3db6e321f9884479b6c05a649
6
+ metadata.gz: 542ec1f765ae022d7f40c1b493ba2af6357487e2c1045329f5a7f94ba567958bc2c07b927e941e87067739e4e3ab28b59c85eacf403016f89f1c5bc49eade9ae
7
+ data.tar.gz: e605d9ce316df5acd3fb478cdcde439e6cab75b15569218d2f98af2f608de9ba68b13363e95bfc1250e1d738d72afc2779d2547b0714ca30c24ca0155fa6505d
data/README.md CHANGED
@@ -21,24 +21,52 @@ Or install it yourself as:
21
21
 
22
22
  ## Usage
23
23
 
24
- To add search functionality to a model, for example User add following line to your model.
24
+ ###### To add search functionality to a model, for example User add following line to your model.
25
25
 
26
26
  ```ruby
27
27
  class User < ActiveRecord::Base
28
- searchable_attributes :attribute1, :attribute2
28
+ searchable_attributes :first_name, :last_name
29
29
  end
30
30
  ```
31
31
  Then use
32
32
  ```ruby
33
33
  def index
34
- User.search("something")
34
+ User.search("something")
35
35
  end
36
36
  ```
37
37
 
38
38
  searchable_attributes line makes model searchable by adding search method to User model.
39
- Specifying attributes by :attribute1, :attribute2 enables searching in specied fields. It is optional to specify attributes, if no attributes are specified then all attributes are searched.
39
+ Specifying attributes by :first_name, :last_name enables searching in specied fields. It is optional to specify attributes, if no attributes are specified then all attributes are searched.
40
40
 
41
41
 
42
+ ###### To enable searching from associations, you can mention asssociation name with attributes to be searched from that association as below:
43
+
44
+ Suppose our user has many posts, then in our model
45
+
46
+ ```ruby
47
+ class User < ActiveRecord::Base
48
+ has_many :posts
49
+ searchable_attributes :name, posts: [:title]
50
+ end
51
+ ```
52
+
53
+ or if you want to search from all text or string fields,
54
+
55
+ ```ruby
56
+ class User < ActiveRecord::Base
57
+ has_many :posts
58
+ searchable_attributes :name, posts: []
59
+ end
60
+ ```
61
+
62
+
63
+ Then use,
64
+ ```ruby
65
+ def index
66
+ User.search("something")
67
+ end
68
+ ```
69
+
42
70
  ## Development
43
71
 
44
72
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -47,7 +75,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
47
75
 
48
76
  ## Contributing
49
77
 
50
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/make_model_searchable. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
78
+ Bug reports and pull requests are welcome on GitHub at https://github.com/8parth/make_model_searchable. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
51
79
 
52
80
 
53
81
  ## License
@@ -5,9 +5,9 @@ require 'models/searchable_field'
5
5
  module MakeModelSearchable
6
6
 
7
7
  def searchable_attributes(*options)
8
+ # self.connection
8
9
  joined_options = options.select{ |option| option.is_a? (Hash) }
9
10
  options = options.select{ |option| !option.is_a?(Hash) }
10
- self.connection
11
11
  setup_fields(options)
12
12
  if joined_options.present?
13
13
  setup_joined_fields(joined_options)
@@ -49,22 +49,22 @@ module MakeModelSearchable
49
49
  end
50
50
  end
51
51
  if searchable_columns.present?
52
- options.select!{ |option| searchable_columns.include?(option.to_s) }
52
+ valid_fields = options.select{ |option| searchable_columns.include?(option.to_s) }
53
53
  else
54
- options = []
54
+ valid_fields = []
55
55
  end
56
- options
56
+ valid_fields
57
57
  end
58
58
 
59
59
  def get_valid_joined_fields(key, columns_array)
60
60
  associated_model = self.reflect_on_association(key).klass
61
61
  associated_model.connection
62
62
  if columns_array.empty?
63
- options = associated_model.columns.select{ |col| col.type == :string or col.type == :text }
63
+ valid_joied_fields = associated_model.columns.select{ |col| col.type == :string or col.type == :text }
64
64
  else
65
- options = associated_model.columns.select{ |col| (col.type == :string or col.type == :text) and columns_array.include?(col.name.to_sym) }
65
+ valid_joied_fields = associated_model.columns.select{ |col| (col.type == :string or col.type == :text) and columns_array.include?(col.name.to_sym) }
66
66
  end
67
- options
67
+ valid_joied_fields
68
68
  end
69
69
 
70
70
  module ClassMethods
@@ -1,3 +1,3 @@
1
1
  module MakeModelSearchable
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: make_model_searchable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - 8parth
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-27 00:00:00.000000000 Z
11
+ date: 2017-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -176,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
176
  version: '0'
177
177
  requirements: []
178
178
  rubyforge_project:
179
- rubygems_version: 2.4.8
179
+ rubygems_version: 2.6.8
180
180
  signing_key:
181
181
  specification_version: 4
182
182
  summary: Adds simple search functionality to your models.