duck_record 0.0.22 → 0.0.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/duck_record/locale/en.yml +1 -0
- data/lib/duck_record/validations.rb +1 -0
- data/lib/duck_record/validations/subset.rb +65 -0
- data/lib/duck_record/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc4554980a2453870fa71616cd56279ce83b5454
|
4
|
+
data.tar.gz: 0e62dba8f62514499fc95fe75a9f24548e93f6ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c4bdf7e498269309f56201a3f605d5939202561bafdbd106efebbd4c5f8d8c86a6bf2607c5678d04ef0beba5654b805c53ee75dcfb930dcb2cbeb8cf22f4930
|
7
|
+
data.tar.gz: d1f951ff91b996436acb2a244b3f8bf3cee8bdd58f742c31e968465f1c531818ec4a4f97b8dfc0fb1865751c39a8235967ae445ebbdeaf50e74b37b929c69d4c
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_model/validations/clusivity"
|
4
|
+
|
5
|
+
module DuckRecord
|
6
|
+
module Validations
|
7
|
+
class SubsetValidator < ActiveModel::EachValidator # :nodoc:
|
8
|
+
include ActiveModel::Validations::Clusivity
|
9
|
+
|
10
|
+
def validate_each(record, attribute, value)
|
11
|
+
unless subset?(record, value)
|
12
|
+
record.errors.add(attribute, :subset, options.except(:in, :within).merge!(value: value))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def subset?(record, value)
|
19
|
+
return false unless value.respond_to?(:to_a)
|
20
|
+
|
21
|
+
enumerable = value.to_a
|
22
|
+
members =
|
23
|
+
if delimiter.respond_to?(:call)
|
24
|
+
delimiter.call(record)
|
25
|
+
elsif delimiter.respond_to?(:to_sym)
|
26
|
+
record.send(delimiter)
|
27
|
+
else
|
28
|
+
delimiter
|
29
|
+
end
|
30
|
+
|
31
|
+
(members & enumerable).size == enumerable.size
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
module HelperMethods
|
36
|
+
# Validates whether the value of the specified attribute is available in a
|
37
|
+
# particular enumerable object.
|
38
|
+
#
|
39
|
+
# class Person < ActiveRecord::Base
|
40
|
+
# validates_inclusion_of :gender, in: %w( m f )
|
41
|
+
# validates_inclusion_of :age, in: 0..99
|
42
|
+
# validates_inclusion_of :format, in: %w( jpg gif png ), message: "extension %{value} is not included in the list"
|
43
|
+
# validates_inclusion_of :states, in: ->(person) { STATES[person.country] }
|
44
|
+
# validates_inclusion_of :karma, in: :available_karmas
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# Configuration options:
|
48
|
+
# * <tt>:in</tt> - An enumerable object of available items. This can be
|
49
|
+
# supplied as a proc, lambda or symbol which returns an enumerable. If the
|
50
|
+
# enumerable is a numerical, time or datetime range the test is performed
|
51
|
+
# with <tt>Range#cover?</tt>, otherwise with <tt>include?</tt>. When using
|
52
|
+
# a proc or lambda the instance under validation is passed as an argument.
|
53
|
+
# * <tt>:within</tt> - A synonym(or alias) for <tt>:in</tt>
|
54
|
+
# * <tt>:message</tt> - Specifies a custom error message (default is: "is
|
55
|
+
# not included in the list").
|
56
|
+
#
|
57
|
+
# There is also a list of default options supported by every validator:
|
58
|
+
# +:if+, +:unless+, +:on+, +:allow_nil+, +:allow_blank+, and +:strict+.
|
59
|
+
# See <tt>ActiveModel::Validations#validates</tt> for more information
|
60
|
+
def validates_subset_of(*attr_names)
|
61
|
+
validates_with SubsetValidator, _merge_attributes(attr_names)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/duck_record/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: duck_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jasl
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -150,6 +150,7 @@ files:
|
|
150
150
|
- lib/duck_record/type/time.rb
|
151
151
|
- lib/duck_record/type/unsigned_integer.rb
|
152
152
|
- lib/duck_record/validations.rb
|
153
|
+
- lib/duck_record/validations/subset.rb
|
153
154
|
- lib/duck_record/validations/uniqueness_on_real_record.rb
|
154
155
|
- lib/duck_record/version.rb
|
155
156
|
- lib/tasks/acts_as_record_tasks.rake
|
@@ -173,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
174
|
version: '0'
|
174
175
|
requirements: []
|
175
176
|
rubyforge_project:
|
176
|
-
rubygems_version: 2.6.
|
177
|
+
rubygems_version: 2.6.13
|
177
178
|
signing_key:
|
178
179
|
specification_version: 4
|
179
180
|
summary: Used for creating virtual models like ActiveType or ModelAttribute does
|