activerecord_finder 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
@@ -3,7 +3,7 @@ module ActiveRecordFinder
|
|
3
3
|
def restrict(finder = nil, &block)
|
4
4
|
raise ArgumentError, 'wrong number of arguments (0 for 1)' if block.nil? && finder.nil?
|
5
5
|
if block
|
6
|
-
where(
|
6
|
+
where(create_finder(&block).arel)
|
7
7
|
else
|
8
8
|
where(finder.arel)
|
9
9
|
end
|
@@ -11,6 +11,13 @@ module ActiveRecordFinder
|
|
11
11
|
alias :condition :restrict
|
12
12
|
|
13
13
|
def new_finder(&block)
|
14
|
+
finder = create_finder(&block)
|
15
|
+
scoped_where = scoped.arel.where_clauses.map { |w| Arel.sql(w) }
|
16
|
+
arel = Arel::Nodes::And.new([*scoped_where, finder.arel])
|
17
|
+
ActiveRecordFinder::Finder.new(arel_table, arel)
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_finder(&block)
|
14
21
|
activerecord_finder = ActiveRecordFinder::Finder.new(arel_table)
|
15
22
|
if block.arity == 1
|
16
23
|
block.call(activerecord_finder)
|
@@ -18,5 +25,6 @@ module ActiveRecordFinder
|
|
18
25
|
activerecord_finder.instance_eval(&block)
|
19
26
|
end
|
20
27
|
end
|
28
|
+
private :create_finder
|
21
29
|
end
|
22
30
|
end
|
@@ -26,13 +26,11 @@ describe ActiveRecordFinder::Where do
|
|
26
26
|
result.should == [seventeen]
|
27
27
|
end
|
28
28
|
|
29
|
-
it 'concatenates
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
result = Person.
|
34
|
-
result.should == [
|
35
|
-
result = Person.where((finder1 & finder2).arel)
|
36
|
-
result.should == [seventeen]
|
29
|
+
it 'concatenates scoped conditions' do
|
30
|
+
boo = Person.create!(name: "Boo", age: 17)
|
31
|
+
person = Person.where(age: 17).where('name LIKE ?', 'B%')
|
32
|
+
new_finder = person.new_finder { name == 'Boo' }
|
33
|
+
result = Person.restrict(new_finder)
|
34
|
+
result.should == [boo]
|
37
35
|
end
|
38
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord_finder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|