ransack 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -55,15 +55,13 @@ If you're coming from MetaSearch, things to note:
55
55
  is passed to it.
56
56
  3. Common ActiveRecord::Relation methods are no longer delegated by the search object.
57
57
  Instead, you will get your search results (an ActiveRecord::Relation in the case of
58
- the ActiveRecord adapter) via a call to `Search#result`. If passed `:distinct => true`,
59
- `result` will generate a `SELECT DISTINCT` to avoid returning duplicate rows, even if
60
- conditions on a join would otherwise result in some.
58
+ the ActiveRecord adapter) via a call to `Search#result`.
61
59
 
62
60
  In your controller:
63
61
 
64
62
  def index
65
63
  @q = Person.search(params[:q])
66
- @people = @q.result(:distinct => true)
64
+ @people = @q.result
67
65
  end
68
66
 
69
67
  In your view:
@@ -13,8 +13,7 @@ module Ransack
13
13
 
14
14
  def evaluate(search, opts = {})
15
15
  viz = Visitor.new
16
- relation = @object.where(viz.accept(search.base)).order(viz.accept(search.sorts))
17
- opts[:distinct] ? relation.select("DISTINCT #{@klass.quoted_table_name}.*") : relation
16
+ @object.where(viz.accept(search.base)).order(viz.accept(search.sorts))
18
17
  end
19
18
 
20
19
  def attribute_method?(str, klass = @klass)
@@ -5,7 +5,7 @@ module Ransack
5
5
 
6
6
  def self.extended(base)
7
7
  alias :search :ransack unless base.method_defined? :search
8
- base.instance_eval do
8
+ base.class_eval do
9
9
  class_attribute :_ransackers
10
10
  self._ransackers ||= {}
11
11
  end
@@ -16,7 +16,7 @@ module Ransack
16
16
  end
17
17
 
18
18
  def ransacker(name, opts = {}, &block)
19
- Ransacker.new(self, name, opts, &block)
19
+ self._ransackers = _ransackers.merge name.to_s => Ransacker.new(self, name, opts, &block)
20
20
  end
21
21
 
22
22
  def ransackable_attributes(auth_object = nil)
@@ -11,8 +11,7 @@ module Ransack
11
11
 
12
12
  def evaluate(search, opts = {})
13
13
  viz = Visitor.new
14
- relation = @object.where(viz.accept(search.base)).order(viz.accept(search.sorts))
15
- opts[:distinct] ? relation.select("DISTINCT #{@klass.quoted_table_name}.*") : relation
14
+ @object.where(viz.accept(search.base)).order(viz.accept(search.sorts))
16
15
  end
17
16
 
18
17
  def attribute_method?(str, klass = @klass)
@@ -14,8 +14,6 @@ module Ransack
14
14
  @callable = opts[:callable] || block ||
15
15
  (@klass.method(name) if @klass.respond_to?(name)) ||
16
16
  proc {|parent| parent.table[name]}
17
-
18
- @klass._ransackers[name.to_s] = self
19
17
  end
20
18
 
21
19
  def attr_from(bindable)
@@ -1,3 +1,3 @@
1
1
  module Ransack
2
- VERSION = "0.4.2"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -129,12 +129,6 @@ module Ransack
129
129
  where.to_sql.should match /\("people"."name" = 'Ernie' OR "children_people"."name" = 'Ernie'\) AND \("people"."name" = 'Bert' OR "children_people"."name" = 'Bert'\)/
130
130
  end
131
131
 
132
- it 'returns distinct records when passed :distinct => true' do
133
- search = Search.new(Person, :g => [{:m => 'or', :comments_body_cont => 'e', :articles_comments_body_cont => 'e'}])
134
- search.result.should have(920).items
135
- search.result(:distinct => true).should have(330).items
136
- search.result.all.uniq.should eq search.result(:distinct => true).all
137
- end
138
132
  end
139
133
 
140
134
  describe '#sorts=' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ransack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-06-09 00:00:00.000000000 -04:00
12
+ date: 2011-06-10 00:00:00.000000000 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
17
- requirement: &2161553440 !ruby/object:Gem::Requirement
17
+ requirement: &2153569220 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '3.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2161553440
25
+ version_requirements: *2153569220
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activesupport
28
- requirement: &2161552940 !ruby/object:Gem::Requirement
28
+ requirement: &2153568300 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '3.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2161552940
36
+ version_requirements: *2153568300
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: actionpack
39
- requirement: &2161552460 !ruby/object:Gem::Requirement
39
+ requirement: &2153567660 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '3.0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2161552460
47
+ version_requirements: *2153567660
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rspec
50
- requirement: &2161552000 !ruby/object:Gem::Requirement
50
+ requirement: &2153567060 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 2.5.0
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *2161552000
58
+ version_requirements: *2153567060
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: machinist
61
- requirement: &2161551540 !ruby/object:Gem::Requirement
61
+ requirement: &2153566460 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 1.0.6
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *2161551540
69
+ version_requirements: *2153566460
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: faker
72
- requirement: &2161551080 !ruby/object:Gem::Requirement
72
+ requirement: &2153565840 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 0.9.5
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *2161551080
80
+ version_requirements: *2153565840
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: sqlite3
83
- requirement: &2161550620 !ruby/object:Gem::Requirement
83
+ requirement: &2153565180 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ~>
@@ -88,7 +88,7 @@ dependencies:
88
88
  version: 1.3.3
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *2161550620
91
+ version_requirements: *2153565180
92
92
  description: Ransack is the successor to the MetaSearch gem. It improves and expands
93
93
  upon MetaSearch's functionality, but does not have a 100%-compatible API.
94
94
  email: