ransack 1.2.3 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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).
|