acts_as_wild_searchable 0.0.5 → 0.0.6

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