datashift 0.11.0 → 0.11.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/datashift.gemspec +1 -1
- data/lib/datashift/querying.rb +18 -7
- data/lib/loaders/paperclip/attachment_loader.rb +1 -1
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.11.
|
1
|
+
0.11.1
|
data/datashift.gemspec
CHANGED
data/lib/datashift/querying.rb
CHANGED
@@ -16,6 +16,13 @@ module DataShift
|
|
16
16
|
|
17
17
|
module Querying
|
18
18
|
|
19
|
+
# Options:
|
20
|
+
#
|
21
|
+
# :split_on_prefix : Add a prefix to each search term
|
22
|
+
# :case_sensitive : Default is a case insensitive lookup.
|
23
|
+
# :use_like : Attempts a lookup using ike and x% rather than equality
|
24
|
+
#
|
25
|
+
|
19
26
|
def search_for_record(klazz, field, search_term, options = {})
|
20
27
|
|
21
28
|
begin
|
@@ -40,27 +47,31 @@ module DataShift
|
|
40
47
|
|
41
48
|
# Find a record for model klazz, looking up on field containing search_terms
|
42
49
|
# Responds to global Options :
|
50
|
+
#
|
51
|
+
# :add_prefix : Add a prefix to each search term
|
43
52
|
# :case_sensitive : Default is a case insensitive lookup.
|
44
|
-
# :use_like
|
53
|
+
# :use_like : Attempts a lookup using ike and x% rather than equality
|
45
54
|
#
|
46
55
|
# Returns nil if no record found
|
47
|
-
def get_record_by(klazz, field, search_term, split_on = ' ',
|
56
|
+
def get_record_by(klazz, field, search_term, split_on = ' ', options = {})
|
48
57
|
|
49
58
|
begin
|
50
|
-
|
59
|
+
|
60
|
+
split_on_prefix = options[:add_prefix]
|
61
|
+
|
51
62
|
record = search_for_record(klazz, field, search_term)
|
52
63
|
|
53
64
|
# try individual portions of search_term, front -> back i.e "A_B_C_D" => A, B, C etc
|
54
65
|
search_term.split(split_on).each do |str|
|
55
66
|
z = (split_on_prefix) ? "#{split_on_prefix}#{str}": str
|
56
|
-
record = search_for_record(klazz, field, z)
|
67
|
+
record = search_for_record(klazz, field, z, options)
|
57
68
|
break if record
|
58
69
|
end unless(record)
|
59
70
|
|
60
71
|
# this time try incrementally scanning i.e "A_B_C_D" => A, A_B, A_B_C etc
|
61
72
|
search_term.split(split_on).inject("") do |str, term|
|
62
73
|
z = (split_on_prefix) ? "#{split_on_prefix}#{str}#{split_on}#{term}": "#{str}#{split_on}#{term}"
|
63
|
-
record = search_for_record(klazz, field, z)
|
74
|
+
record = search_for_record(klazz, field, z, options)
|
64
75
|
break if record
|
65
76
|
term
|
66
77
|
end unless(record)
|
@@ -74,8 +85,8 @@ module DataShift
|
|
74
85
|
end
|
75
86
|
end
|
76
87
|
|
77
|
-
def get_record_by!(klazz, field, search_terms, split_on = ' ',
|
78
|
-
x = get_record_by(klazz, field, search_terms, split_on,
|
88
|
+
def get_record_by!(klazz, field, search_terms, split_on = ' ', options = {} )
|
89
|
+
x = get_record_by(klazz, field, search_terms, split_on, options)
|
79
90
|
|
80
91
|
raise RecordNotFound, "No #{klazz} record found for [#{search_terms}] on #{field}" unless(x)
|
81
92
|
|
@@ -136,7 +136,7 @@ module DataShift
|
|
136
136
|
record = nil
|
137
137
|
|
138
138
|
puts "Attempting to find matching record where #{attach_to_find_by_field} ~= #{base_name}"
|
139
|
-
record = get_record_by(attach_to_klass, attach_to_find_by_field, base_name, split_on)
|
139
|
+
record = get_record_by(attach_to_klass, attach_to_find_by_field, base_name, split_on, options)
|
140
140
|
|
141
141
|
if(record)
|
142
142
|
puts "Found record for attachment :\n#{record.inspect}"
|