ransack 1.2.3 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -4
- data/CONTRIBUTING.md +12 -4
- data/Gemfile +4 -5
- data/README.md +160 -55
- data/lib/ransack.rb +1 -1
- data/lib/ransack/adapters/active_record/3.0/context.rb +16 -0
- data/lib/ransack/adapters/active_record/3.1/context.rb +24 -0
- data/lib/ransack/adapters/active_record/base.rb +6 -0
- data/lib/ransack/adapters/active_record/context.rb +49 -1
- data/lib/ransack/configuration.rb +23 -6
- data/lib/ransack/constants.rb +46 -45
- data/lib/ransack/context.rb +19 -2
- data/lib/ransack/helpers/form_builder.rb +5 -4
- data/lib/ransack/helpers/form_helper.rb +34 -14
- data/lib/ransack/locale/hu.yml +70 -0
- data/lib/ransack/locale/nl.yml +70 -0
- data/lib/ransack/nodes/attribute.rb +2 -2
- data/lib/ransack/nodes/condition.rb +29 -12
- data/lib/ransack/nodes/grouping.rb +6 -6
- data/lib/ransack/nodes/node.rb +1 -1
- data/lib/ransack/nodes/value.rb +1 -1
- data/lib/ransack/predicate.rb +4 -5
- data/lib/ransack/ransacker.rb +1 -1
- data/lib/ransack/search.rb +39 -13
- data/lib/ransack/translate.rb +7 -8
- data/lib/ransack/version.rb +1 -1
- data/ransack.gemspec +5 -5
- data/spec/ransack/adapters/active_record/base_spec.rb +78 -35
- data/spec/ransack/adapters/active_record/context_spec.rb +58 -15
- data/spec/ransack/configuration_spec.rb +18 -18
- data/spec/ransack/dependencies_spec.rb +1 -1
- data/spec/ransack/helpers/form_builder_spec.rb +29 -29
- data/spec/ransack/helpers/form_helper_spec.rb +14 -1
- data/spec/ransack/nodes/condition_spec.rb +21 -2
- data/spec/ransack/predicate_spec.rb +49 -9
- data/spec/ransack/search_spec.rb +178 -143
- data/spec/ransack/translate_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/support/schema.rb +26 -21
- metadata +15 -11
@@ -7,7 +7,7 @@ module Ransack
|
|
7
7
|
it 'translate namespaced attribute like AR does' do
|
8
8
|
ar_translation = ::Namespace::Article.human_attribute_name(:title)
|
9
9
|
ransack_translation = Ransack::Translate.attribute(:title, :context => ::Namespace::Article.search.context)
|
10
|
-
ransack_translation.
|
10
|
+
expect(ransack_translation).to eq ar_translation
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/support/schema.rb
CHANGED
@@ -28,15 +28,19 @@ class Person < ActiveRecord::Base
|
|
28
28
|
else
|
29
29
|
default_scope { order(id: :desc) }
|
30
30
|
end
|
31
|
-
belongs_to :parent, class_name
|
32
|
-
has_many :children, class_name
|
31
|
+
belongs_to :parent, :class_name => 'Person', :foreign_key => :parent_id
|
32
|
+
has_many :children, :class_name => 'Person', :foreign_key => :parent_id
|
33
33
|
has_many :articles
|
34
34
|
has_many :comments
|
35
|
-
has_many :authored_article_comments, through
|
36
|
-
|
37
|
-
has_many :notes, as
|
35
|
+
has_many :authored_article_comments, :through => :articles,
|
36
|
+
:source => :comments, :foreign_key => :person_id
|
37
|
+
has_many :notes, :as => :notable
|
38
38
|
|
39
|
-
|
39
|
+
scope :restricted, lambda { where("restricted = 1") }
|
40
|
+
scope :active, lambda { where("active = 1") }
|
41
|
+
scope :over_age, lambda { |y| where(["age > ?", y]) }
|
42
|
+
|
43
|
+
ransacker :reversed_name, :formatter => proc { |v| v.reverse } do |parent|
|
40
44
|
parent.table[:name]
|
41
45
|
end
|
42
46
|
|
@@ -80,10 +84,10 @@ class Person < ActiveRecord::Base
|
|
80
84
|
end
|
81
85
|
|
82
86
|
class Article < ActiveRecord::Base
|
83
|
-
belongs_to
|
84
|
-
has_many
|
87
|
+
belongs_to :person
|
88
|
+
has_many :comments
|
85
89
|
has_and_belongs_to_many :tags
|
86
|
-
has_many
|
90
|
+
has_many :notes, :as => :notable
|
87
91
|
end
|
88
92
|
|
89
93
|
module Namespace
|
@@ -108,7 +112,7 @@ class Tag < ActiveRecord::Base
|
|
108
112
|
end
|
109
113
|
|
110
114
|
class Note < ActiveRecord::Base
|
111
|
-
belongs_to :notable, polymorphic
|
115
|
+
belongs_to :notable, :polymorphic => true
|
112
116
|
end
|
113
117
|
|
114
118
|
module Schema
|
@@ -116,7 +120,7 @@ module Schema
|
|
116
120
|
ActiveRecord::Migration.verbose = false
|
117
121
|
|
118
122
|
ActiveRecord::Schema.define do
|
119
|
-
create_table :people, force
|
123
|
+
create_table :people, :force => true do |t|
|
120
124
|
t.integer :parent_id
|
121
125
|
t.string :name
|
122
126
|
t.string :email
|
@@ -128,28 +132,28 @@ module Schema
|
|
128
132
|
t.timestamps
|
129
133
|
end
|
130
134
|
|
131
|
-
create_table :articles, force
|
135
|
+
create_table :articles, :force => true do |t|
|
132
136
|
t.integer :person_id
|
133
137
|
t.string :title
|
134
138
|
t.text :body
|
135
139
|
end
|
136
140
|
|
137
|
-
create_table :comments, force
|
141
|
+
create_table :comments, :force => true do |t|
|
138
142
|
t.integer :article_id
|
139
143
|
t.integer :person_id
|
140
144
|
t.text :body
|
141
145
|
end
|
142
146
|
|
143
|
-
create_table :tags, force
|
147
|
+
create_table :tags, :force => true do |t|
|
144
148
|
t.string :name
|
145
149
|
end
|
146
150
|
|
147
|
-
create_table :articles_tags, force
|
151
|
+
create_table :articles_tags, :force => true, :id => false do |t|
|
148
152
|
t.integer :article_id
|
149
153
|
t.integer :tag_id
|
150
154
|
end
|
151
155
|
|
152
|
-
create_table :notes, force
|
156
|
+
create_table :notes, :force => true do |t|
|
153
157
|
t.integer :notable_id
|
154
158
|
t.string :notable_type
|
155
159
|
t.string :note
|
@@ -159,21 +163,22 @@ module Schema
|
|
159
163
|
|
160
164
|
10.times do
|
161
165
|
person = Person.make
|
162
|
-
Note.make(notable
|
166
|
+
Note.make(:notable => person)
|
163
167
|
3.times do
|
164
|
-
article = Article.make(person
|
168
|
+
article = Article.make(:person => person)
|
165
169
|
3.times do
|
166
170
|
article.tags = [Tag.make, Tag.make, Tag.make]
|
167
171
|
end
|
168
|
-
Note.make(notable
|
172
|
+
Note.make(:notable => article)
|
169
173
|
10.times do
|
170
|
-
Comment.make(article
|
174
|
+
Comment.make(:article => article, :person => person)
|
171
175
|
end
|
172
176
|
end
|
173
177
|
end
|
174
178
|
|
175
179
|
Comment.make(
|
176
|
-
body
|
180
|
+
:body => 'First post!',
|
181
|
+
:article => Article.make(:title => 'Hello, world!')
|
177
182
|
)
|
178
183
|
end
|
179
184
|
end
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ransack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ernie Miller
|
8
8
|
- Ryan Bigg
|
9
|
+
- Jon Atack
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2014-
|
13
|
+
date: 2014-08-23 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: actionpack
|
@@ -73,28 +74,28 @@ dependencies:
|
|
73
74
|
requirements:
|
74
75
|
- - "~>"
|
75
76
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.
|
77
|
+
version: '1.1'
|
77
78
|
type: :runtime
|
78
79
|
prerelease: false
|
79
80
|
version_requirements: !ruby/object:Gem::Requirement
|
80
81
|
requirements:
|
81
82
|
- - "~>"
|
82
83
|
- !ruby/object:Gem::Version
|
83
|
-
version: 1.
|
84
|
+
version: '1.1'
|
84
85
|
- !ruby/object:Gem::Dependency
|
85
86
|
name: rspec
|
86
87
|
requirement: !ruby/object:Gem::Requirement
|
87
88
|
requirements:
|
88
89
|
- - "~>"
|
89
90
|
- !ruby/object:Gem::Version
|
90
|
-
version: 2.
|
91
|
+
version: 2.14.0
|
91
92
|
type: :development
|
92
93
|
prerelease: false
|
93
94
|
version_requirements: !ruby/object:Gem::Requirement
|
94
95
|
requirements:
|
95
96
|
- - "~>"
|
96
97
|
- !ruby/object:Gem::Version
|
97
|
-
version: 2.
|
98
|
+
version: 2.14.0
|
98
99
|
- !ruby/object:Gem::Dependency
|
99
100
|
name: machinist
|
100
101
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,16 +142,16 @@ dependencies:
|
|
141
142
|
name: pg
|
142
143
|
requirement: !ruby/object:Gem::Requirement
|
143
144
|
requirements:
|
144
|
-
- -
|
145
|
+
- - ">="
|
145
146
|
- !ruby/object:Gem::Version
|
146
|
-
version: 0
|
147
|
+
version: '0'
|
147
148
|
type: :development
|
148
149
|
prerelease: false
|
149
150
|
version_requirements: !ruby/object:Gem::Requirement
|
150
151
|
requirements:
|
151
|
-
- -
|
152
|
+
- - ">="
|
152
153
|
- !ruby/object:Gem::Version
|
153
|
-
version: 0
|
154
|
+
version: '0'
|
154
155
|
- !ruby/object:Gem::Dependency
|
155
156
|
name: mysql2
|
156
157
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,6 +185,7 @@ description: Ransack is the successor to the MetaSearch gem. It improves and exp
|
|
184
185
|
email:
|
185
186
|
- ernie@erniemiller.org
|
186
187
|
- radarlistener@gmail.com
|
188
|
+
- jonnyatack@gmail.com
|
187
189
|
executables: []
|
188
190
|
extensions: []
|
189
191
|
extra_rdoc_files: []
|
@@ -214,6 +216,8 @@ files:
|
|
214
216
|
- lib/ransack/locale/en.yml
|
215
217
|
- lib/ransack/locale/es.yml
|
216
218
|
- lib/ransack/locale/fr.yml
|
219
|
+
- lib/ransack/locale/hu.yml
|
220
|
+
- lib/ransack/locale/nl.yml
|
217
221
|
- lib/ransack/locale/zh.yml
|
218
222
|
- lib/ransack/naming.rb
|
219
223
|
- lib/ransack/nodes.rb
|
@@ -272,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
272
276
|
version: '0'
|
273
277
|
requirements: []
|
274
278
|
rubyforge_project: ransack
|
275
|
-
rubygems_version: 2.
|
279
|
+
rubygems_version: 2.4.1
|
276
280
|
signing_key:
|
277
281
|
specification_version: 4
|
278
282
|
summary: Object-based searching for ActiveRecord (currently).
|