activerecord-not_nil 0.0.0 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cfd9baad29246455c854ab457c5fe3f7a1af1721f5fe66f0894f3f2b4f5b0e3
|
4
|
+
data.tar.gz: 2b6c5da6ca453551ccabb613f5966a5e4c1ff21e673df8dc9a6a1985c2ed1015
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5710661d1a73e6e02485981145bd51c1ea145cb4bd84503921daffc88f316e7171fc6664e9b96eeb9ebd5fc4c8e4f84b80747335787019524d58bbe8ba17cf2d
|
7
|
+
data.tar.gz: c57ead36b09896eeeab2db1411e7a9ed86cd6fb20f8274e521726ef4b82c5267fa58eec8ff6c42702f227df2fc363899ee2699e5ea4d6870df40220f7ff943b4
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module ConnectionAdapters
|
5
|
+
module Quoting
|
6
|
+
alias origin_type_cast type_cast
|
7
|
+
def type_cast(value)
|
8
|
+
raise ArgumentError, 'Cannot assign not_nil as a value' if value.is_a?(::NotNilClass)
|
9
|
+
|
10
|
+
origin_type_cast(value)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Arel
|
4
|
+
module Visitors
|
5
|
+
# Module to override Arel::Visitors::ToSql#visit_Arel_Nodes_Equality
|
6
|
+
module NotNilOverride
|
7
|
+
def visit_Arel_Nodes_Equality(o, collector) # rubocop:disable Naming/MethodName
|
8
|
+
return super if o.right.is_a?(Arel::Attributes::Attribute)
|
9
|
+
return super if o.right.is_a?(Arel::Nodes::NamedFunction)
|
10
|
+
return super unless o.right.value.is_a?(::NotNilClass)
|
11
|
+
|
12
|
+
collector = visit o.left, collector
|
13
|
+
collector << ' IS NOT NULL'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class ToSql < Arel::Visitors::Visitor
|
18
|
+
prepend NotNilOverride
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/activerecord-not_nil.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
+
# rubocop:disable Naming/FileName
|
1
2
|
# frozen_string_literal: true
|
2
3
|
|
3
4
|
require 'active_record'
|
4
5
|
require 'not_niller'
|
5
6
|
|
6
|
-
|
7
|
-
|
7
|
+
require_relative 'activerecord-not_nil/active_record/connection_adapters/quoting'
|
8
|
+
require_relative 'activerecord-not_nil/arel/visitors/to_sql'
|
9
|
+
|
10
|
+
# rubocop:enable Naming/FileName
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-not_nil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Payt devs
|
@@ -52,6 +52,8 @@ extensions: []
|
|
52
52
|
extra_rdoc_files: []
|
53
53
|
files:
|
54
54
|
- lib/activerecord-not_nil.rb
|
55
|
+
- lib/activerecord-not_nil/active_record/connection_adapters/quoting.rb
|
56
|
+
- lib/activerecord-not_nil/arel/visitors/to_sql.rb
|
55
57
|
homepage: https://github.com/payt/activerecord-not_nil
|
56
58
|
licenses:
|
57
59
|
- MIT
|