acts_as_wild_searchable 0.0.5 → 0.0.6

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.
@@ -1,3 +1,3 @@
1
1
  module ActsAsWildSearchable
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -31,11 +31,7 @@ module ActsAsWildSearchable
31
31
  def method_missing(method_name, *args)
32
32
  # Verify that method start with attribute name followed by like?
33
33
  if match = method_name.to_s.match(/^([a-zA-Z]\w*)_like\?$/)
34
- if args.nil? or args.empty? or args.first.nil? or args.first.empty?
35
- where(nil)
36
- else
37
- apply_filter(match.captures.first, args)
38
- end
34
+ apply_filter(match.captures.first, args)
39
35
  else
40
36
  super
41
37
  end
@@ -54,8 +50,11 @@ module ActsAsWildSearchable
54
50
  element.kind_of? Hash
55
51
  }.reduce({:clause=>"or"}) { |h, pairs| pairs.each { |k,v| h[k]=v}; h}
56
52
 
57
- conditions = filter.select { |element|
58
- element.kind_of? String
53
+
54
+ conditions = filter.reduce([]) { |group, element|
55
+ element.each { |inner_string| group<<inner_string } if element.kind_of? Array
56
+ group<<element if element.kind_of? String
57
+ group
59
58
  }.map { |condition|
60
59
  wild_condition = "#{condition}"
61
60
  if (clauses.has_key?(:left) and clauses[:left])
@@ -73,7 +72,7 @@ module ActsAsWildSearchable
73
72
  wild_condition
74
73
  }
75
74
 
76
- sentences = conditions.map { |x| "#{capture} like ?" }
75
+ sentences = conditions.map { |x| "#{capture} like ?" }
77
76
 
78
77
  if (clauses.has_key?(:clause) and clauses[:clause]=="and" )
79
78
  join_type = " and "
@@ -81,8 +80,12 @@ module ActsAsWildSearchable
81
80
  join_type = " or "
82
81
  end
83
82
  sentences = sentences.join(join_type) if sentences.size > 1
84
- sentences = sentences.first if sentences.size == 1
85
- where conditions.prepend sentences
83
+ sentences = sentences.first if sentences.size == 1
84
+ if sentences.flatten.size == 0
85
+ all
86
+ else
87
+ where conditions.prepend sentences
88
+ end
86
89
  end
87
90
 
88
91
  end
@@ -55,8 +55,16 @@ class ActsAsWildSearchableTest < ActiveSupport::TestCase
55
55
 
56
56
  test "query_nil_args" do
57
57
  query = User.name_like?
58
+ puts query.explain
58
59
  #assert query.explain.include?("S")
59
- assert_kind_of Array, query
60
+ assert_kind_of ActiveRecord::Relation, query
61
+ end
62
+
63
+ test "query_empty_array" do
64
+ query = User.name_like?([])
65
+ puts query.explain
66
+ #assert query.explain.include?("S")
67
+ assert_kind_of ActiveRecord::Relation, query
60
68
  end
61
69
 
62
70
 
@@ -1240,3 +1240,156 @@
1240
1240
  User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%')
1241
1241
  EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%')
1242
1242
   (0.0ms) rollback transaction
1243
+  (0.5ms) begin transaction
1244
+  (0.0ms) rollback transaction
1245
+  (0.0ms) begin transaction
1246
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio' and name like '%Kalli')
1247
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio' and name like '%Kalli')
1248
+  (0.1ms) rollback transaction
1249
+  (0.0ms) begin transaction
1250
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%' and name like 'Kalli%')
1251
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%' and name like 'Kalli%')
1252
+  (0.0ms) rollback transaction
1253
+  (0.0ms) begin transaction
1254
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio%' or name like '%Kalli%')
1255
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio%' or name like '%Kalli%')
1256
+  (0.0ms) rollback transaction
1257
+  (0.1ms) begin transaction
1258
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (NULL)
1259
+  (0.0ms) rollback transaction
1260
+  (0.0ms) begin transaction
1261
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio' or name like '%Kalli')
1262
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio' or name like '%Kalli')
1263
+  (0.0ms) rollback transaction
1264
+  (0.0ms) begin transaction
1265
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%' or name like 'Kalli%')
1266
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%' or name like 'Kalli%')
1267
+  (0.0ms) rollback transaction
1268
+  (0.0ms) begin transaction
1269
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio%')
1270
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio%')
1271
+  (0.0ms) rollback transaction
1272
+  (0.0ms) begin transaction
1273
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio')
1274
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio')
1275
+  (0.0ms) rollback transaction
1276
+  (0.0ms) begin transaction
1277
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%')
1278
+ EXPLAIN (0.0ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%')
1279
+  (0.0ms) rollback transaction
1280
+  (0.5ms) begin transaction
1281
+  (0.0ms) rollback transaction
1282
+  (0.0ms) begin transaction
1283
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio' and name like '%Kalli')
1284
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio' and name like '%Kalli')
1285
+  (0.1ms) rollback transaction
1286
+  (0.0ms) begin transaction
1287
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%' and name like 'Kalli%')
1288
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%' and name like 'Kalli%')
1289
+  (0.0ms) rollback transaction
1290
+  (0.0ms) begin transaction
1291
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio%' or name like '%Kalli%')
1292
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio%' or name like '%Kalli%')
1293
+  (0.0ms) rollback transaction
1294
+  (0.0ms) begin transaction
1295
+  (0.0ms) rollback transaction
1296
+  (0.0ms) begin transaction
1297
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio' or name like '%Kalli')
1298
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio' or name like '%Kalli')
1299
+  (0.0ms) rollback transaction
1300
+  (0.0ms) begin transaction
1301
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%' or name like 'Kalli%')
1302
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%' or name like 'Kalli%')
1303
+  (0.0ms) rollback transaction
1304
+  (0.0ms) begin transaction
1305
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio%')
1306
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio%')
1307
+  (0.0ms) rollback transaction
1308
+  (0.0ms) begin transaction
1309
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio')
1310
+ EXPLAIN (0.0ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio')
1311
+  (0.0ms) rollback transaction
1312
+  (0.0ms) begin transaction
1313
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%')
1314
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%')
1315
+  (0.0ms) rollback transaction
1316
+  (0.5ms) begin transaction
1317
+  (0.0ms) rollback transaction
1318
+  (0.0ms) begin transaction
1319
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio' and name like '%Kalli')
1320
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio' and name like '%Kalli')
1321
+  (0.1ms) rollback transaction
1322
+  (0.0ms) begin transaction
1323
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%' and name like 'Kalli%')
1324
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%' and name like 'Kalli%')
1325
+  (0.0ms) rollback transaction
1326
+  (0.0ms) begin transaction
1327
+  (0.0ms) rollback transaction
1328
+  (0.0ms) begin transaction
1329
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio%' or name like '%Kalli%')
1330
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio%' or name like '%Kalli%')
1331
+  (0.0ms) rollback transaction
1332
+  (0.0ms) begin transaction
1333
+  (0.0ms) rollback transaction
1334
+  (0.0ms) begin transaction
1335
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio' or name like '%Kalli')
1336
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio' or name like '%Kalli')
1337
+  (0.0ms) rollback transaction
1338
+  (0.0ms) begin transaction
1339
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%' or name like 'Kalli%')
1340
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%' or name like 'Kalli%')
1341
+  (0.0ms) rollback transaction
1342
+  (0.0ms) begin transaction
1343
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio%')
1344
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio%')
1345
+  (0.0ms) rollback transaction
1346
+  (0.0ms) begin transaction
1347
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio')
1348
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio')
1349
+  (0.0ms) rollback transaction
1350
+  (0.0ms) begin transaction
1351
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%')
1352
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%')
1353
+  (0.0ms) rollback transaction
1354
+  (0.5ms) begin transaction
1355
+  (0.0ms) rollback transaction
1356
+  (0.0ms) begin transaction
1357
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio' and name like '%Kalli')
1358
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio' and name like '%Kalli')
1359
+  (0.1ms) rollback transaction
1360
+  (0.0ms) begin transaction
1361
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%' and name like 'Kalli%')
1362
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%' and name like 'Kalli%')
1363
+  (0.0ms) rollback transaction
1364
+  (0.0ms) begin transaction
1365
+ User Load (0.0ms) SELECT "users".* FROM "users" WHERE (NULL)
1366
+ EXPLAIN (0.0ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (NULL)
1367
+  (0.0ms) rollback transaction
1368
+  (0.0ms) begin transaction
1369
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio%' or name like '%Kalli%')
1370
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio%' or name like '%Kalli%')
1371
+  (0.0ms) rollback transaction
1372
+  (0.0ms) begin transaction
1373
+ User Load (0.0ms) SELECT "users".* FROM "users" WHERE (NULL)
1374
+ EXPLAIN (0.0ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (NULL)
1375
+  (0.0ms) rollback transaction
1376
+  (0.0ms) begin transaction
1377
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio' or name like '%Kalli')
1378
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio' or name like '%Kalli')
1379
+  (0.0ms) rollback transaction
1380
+  (0.0ms) begin transaction
1381
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%' or name like 'Kalli%')
1382
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%' or name like 'Kalli%')
1383
+  (0.0ms) rollback transaction
1384
+  (0.0ms) begin transaction
1385
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio%')
1386
+ EXPLAIN (0.0ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio%')
1387
+  (0.0ms) rollback transaction
1388
+  (0.0ms) begin transaction
1389
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like '%Herminio')
1390
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like '%Herminio')
1391
+  (0.0ms) rollback transaction
1392
+  (0.0ms) begin transaction
1393
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE (name like 'Herminio%')
1394
+ EXPLAIN (0.1ms) EXPLAIN QUERY PLAN SELECT "users".* FROM "users" WHERE (name like 'Herminio%')
1395
+  (0.0ms) rollback transaction
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_wild_searchable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-10 00:00:00.000000000Z
12
+ date: 2012-04-13 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70207562156860 !ruby/object:Gem::Requirement
16
+ requirement: &70247487948800 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.2.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70207562156860
24
+ version_requirements: *70247487948800
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sqlite3
27
- requirement: &70207562156200 !ruby/object:Gem::Requirement
27
+ requirement: &70247487948100 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70207562156200
35
+ version_requirements: *70247487948100
36
36
  description: This gem allows you to use the acts_as_wild_searchable tag to your models
37
37
  and make methods for each attribute to search using wild cards and like
38
38
  email: