effective_resources 2.8.0 → 2.8.2
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0140383360a1897a1b21a4a5897f5e61d9099210ab1fca6fe8e93159c7bdc999'
|
4
|
+
data.tar.gz: 33819637928fe7fdb8e75df61f79526228652142fc76ab09222bed6ed9f91e6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 490636b3efc23c0406833448528f2e8029d9d707a49db92309eda2d65fff6be90d7c31c9d835827866d953b9c18a13781aeb11b43f606c411b051037f0c6f1ed
|
7
|
+
data.tar.gz: 1dc0516ce102fac154bfc374deee17678f4d4f33906a2e90bf96e175d5af0573faff5800749c5fff3f198110a3ef142b3fdb1b341e21aef3656a1388e6c4352b
|
data/README.md
CHANGED
@@ -213,6 +213,19 @@ Just put another `app/views/posts/index.html.haml` in the posts directory to ove
|
|
213
213
|
|
214
214
|
Sure why not. These don't really fit into my code base anywhere else.
|
215
215
|
|
216
|
+
### acts_as_paginable
|
217
|
+
|
218
|
+
Quickly adds a `paginate` scope to your model that can then be used in your views and also integrates well with `effective_bootstrap`. The pagination method is `Limit and Offset`.
|
219
|
+
|
220
|
+
```ruby
|
221
|
+
# Given any model you just need to call it like
|
222
|
+
class Thing < ApplicationRecord
|
223
|
+
acts_as_paginable
|
224
|
+
end
|
225
|
+
|
226
|
+
# Now you can use it like:
|
227
|
+
Thing.all.paginate(page: 1, per_page: 5)
|
228
|
+
```
|
216
229
|
### acts_as_tokened
|
217
230
|
|
218
231
|
Quickly adds rails 5 `has_secure_token` to your model, along with some `Post.find()` enhancements to work with tokens instead of IDs.
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#
|
2
|
+
# ActsAsPaginable
|
3
|
+
#
|
4
|
+
# Adds the a `paginate` scope to a model for `limit` and `offset` pagination.
|
5
|
+
#
|
6
|
+
module ActsAsPaginable
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
module Base
|
10
|
+
def acts_as_paginable(options = nil)
|
11
|
+
include ::ActsAsPaginable
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module ClassMethods
|
16
|
+
def acts_as_paginable?; true; end
|
17
|
+
end
|
18
|
+
|
19
|
+
included do
|
20
|
+
def self.default_per_page=(per_page)
|
21
|
+
@default_per_page = per_page
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.default_per_page
|
25
|
+
@default_per_page || 12 # because we often do 3 columns of 4 elements layouts
|
26
|
+
end
|
27
|
+
|
28
|
+
scope :paginate, -> (page: nil, per_page: nil) {
|
29
|
+
per_page = (per_page || default_per_page).to_i
|
30
|
+
page = (page || 1).to_i
|
31
|
+
offset = [(page - 1), 0].max * (per_page).to_i
|
32
|
+
|
33
|
+
all.limit(per_page).offset(offset)
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
@@ -313,11 +313,10 @@ module Effective
|
|
313
313
|
)
|
314
314
|
|
315
315
|
if as == :date
|
316
|
-
|
317
|
-
|
316
|
+
relation.where("#{sql_column} >= ? AND #{sql_column} < ?", term.to_date, (end_at + 1.day).to_date)
|
317
|
+
else
|
318
|
+
relation.where("#{sql_column} >= ? AND #{sql_column} <= ?", term, end_at)
|
318
319
|
end
|
319
|
-
|
320
|
-
relation.where("#{sql_column} >= ? AND #{sql_column} <= ?", term, end_at)
|
321
320
|
elsif value.respond_to?(:strftime) && operation == :eq
|
322
321
|
relation.where(attribute.matches(value))
|
323
322
|
end
|
@@ -347,7 +346,7 @@ module Effective
|
|
347
346
|
|
348
347
|
case operation
|
349
348
|
when :eq then relation.where("#{sql_column} = ?", term)
|
350
|
-
when :matches then search_columns_by_ilike_term(relation, term, columns: name)
|
349
|
+
when :matches then search_columns_by_ilike_term(relation, term, columns: (sql_column.presence || name))
|
351
350
|
when :not_eq then relation.where(attribute.not_eq(term))
|
352
351
|
when :does_not_match then relation.where(attribute.does_not_match("%#{term}%"))
|
353
352
|
when :starts_with then relation.where(attribute.matches("#{term}%"))
|
@@ -426,7 +425,10 @@ module Effective
|
|
426
425
|
|
427
426
|
# Do any of these columns contain all the terms?
|
428
427
|
conditions = columns.map do |name|
|
429
|
-
|
428
|
+
column = (name.to_s.include?('.') ? name : sql_column(name))
|
429
|
+
raise("expected an sql column for #{name}") if column.blank?
|
430
|
+
|
431
|
+
keys = terms.keys.map { |key| (fuzzy ? "#{column} #{ilike} :#{key}" : "#{column} = :#{key}") }
|
430
432
|
'(' + keys.join(' AND ') + ')'
|
431
433
|
end.join(' OR ')
|
432
434
|
|
@@ -29,8 +29,10 @@ module EffectiveResources
|
|
29
29
|
ActiveRecord::Base.extend(ActsAsTokened::Base)
|
30
30
|
ActiveRecord::Base.extend(ActsAsSlugged::Base)
|
31
31
|
ActiveRecord::Base.extend(ActsAsStatused::Base)
|
32
|
+
ActiveRecord::Base.extend(ActsAsPaginable::Base)
|
32
33
|
ActiveRecord::Base.extend(ActsAsWizard::Base)
|
33
34
|
ActiveRecord::Base.extend(ActsAsPurchasableWizard::Base)
|
35
|
+
|
34
36
|
ActiveRecord::Base.extend(HasManyPurgable::Base)
|
35
37
|
ActiveRecord::Base.extend(HasManyRichTexts::Base)
|
36
38
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_resources
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.8.
|
4
|
+
version: 2.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -122,6 +122,34 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: psych
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "<"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '4'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "<"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '4'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: net-smtp
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
125
153
|
description: Make any controller an effective resource controller.
|
126
154
|
email:
|
127
155
|
- info@codeandeffect.com
|
@@ -159,6 +187,7 @@ files:
|
|
159
187
|
- app/mailers/concerns/effective_mailer.rb
|
160
188
|
- app/models/concerns/acts_as_archived.rb
|
161
189
|
- app/models/concerns/acts_as_email_form.rb
|
190
|
+
- app/models/concerns/acts_as_paginable.rb
|
162
191
|
- app/models/concerns/acts_as_purchasable_wizard.rb
|
163
192
|
- app/models/concerns/acts_as_slugged.rb
|
164
193
|
- app/models/concerns/acts_as_statused.rb
|
@@ -243,7 +272,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
243
272
|
- !ruby/object:Gem::Version
|
244
273
|
version: '0'
|
245
274
|
requirements: []
|
246
|
-
rubygems_version: 3.
|
275
|
+
rubygems_version: 3.3.7
|
247
276
|
signing_key:
|
248
277
|
specification_version: 4
|
249
278
|
summary: Make any controller an effective resource controller.
|