active_data 0.3.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.rspec +0 -1
- data/.rvmrc +1 -1
- data/.travis.yml +13 -6
- data/Appraisals +7 -0
- data/Gemfile +1 -5
- data/Guardfile +68 -15
- data/README.md +144 -2
- data/active_data.gemspec +19 -11
- data/gemfiles/rails.4.0.gemfile +14 -0
- data/gemfiles/rails.4.1.gemfile +14 -0
- data/gemfiles/rails.4.2.gemfile +14 -0
- data/gemfiles/rails.5.0.gemfile +14 -0
- data/lib/active_data.rb +120 -3
- data/lib/active_data/active_record/associations.rb +50 -0
- data/lib/active_data/active_record/nested_attributes.rb +24 -0
- data/lib/active_data/config.rb +40 -0
- data/lib/active_data/errors.rb +93 -0
- data/lib/active_data/extensions.rb +33 -0
- data/lib/active_data/model.rb +16 -74
- data/lib/active_data/model/associations.rb +84 -15
- data/lib/active_data/model/associations/base.rb +79 -0
- data/lib/active_data/model/associations/collection/embedded.rb +12 -0
- data/lib/active_data/model/associations/collection/proxy.rb +32 -0
- data/lib/active_data/model/associations/collection/referenced.rb +26 -0
- data/lib/active_data/model/associations/embeds_many.rb +124 -18
- data/lib/active_data/model/associations/embeds_one.rb +90 -15
- data/lib/active_data/model/associations/nested_attributes.rb +180 -0
- data/lib/active_data/model/associations/references_many.rb +96 -0
- data/lib/active_data/model/associations/references_one.rb +83 -0
- data/lib/active_data/model/associations/reflections/base.rb +100 -0
- data/lib/active_data/model/associations/reflections/embeds_many.rb +25 -0
- data/lib/active_data/model/associations/reflections/embeds_one.rb +49 -0
- data/lib/active_data/model/associations/reflections/reference_reflection.rb +45 -0
- data/lib/active_data/model/associations/reflections/references_many.rb +28 -0
- data/lib/active_data/model/associations/reflections/references_one.rb +28 -0
- data/lib/active_data/model/associations/validations.rb +63 -0
- data/lib/active_data/model/attributes.rb +247 -0
- data/lib/active_data/model/attributes/attribute.rb +73 -0
- data/lib/active_data/model/attributes/base.rb +116 -0
- data/lib/active_data/model/attributes/collection.rb +17 -0
- data/lib/active_data/model/attributes/dictionary.rb +26 -0
- data/lib/active_data/model/attributes/localized.rb +42 -0
- data/lib/active_data/model/attributes/reference_many.rb +21 -0
- data/lib/active_data/model/attributes/reference_one.rb +42 -0
- data/lib/active_data/model/attributes/reflections/attribute.rb +55 -0
- data/lib/active_data/model/attributes/reflections/base.rb +62 -0
- data/lib/active_data/model/attributes/reflections/collection.rb +10 -0
- data/lib/active_data/model/attributes/reflections/dictionary.rb +13 -0
- data/lib/active_data/model/attributes/reflections/localized.rb +43 -0
- data/lib/active_data/model/attributes/reflections/reference_many.rb +10 -0
- data/lib/active_data/model/attributes/reflections/reference_one.rb +58 -0
- data/lib/active_data/model/attributes/reflections/represents.rb +55 -0
- data/lib/active_data/model/attributes/represents.rb +64 -0
- data/lib/active_data/model/callbacks.rb +71 -0
- data/lib/active_data/model/conventions.rb +35 -0
- data/lib/active_data/model/dirty.rb +77 -0
- data/lib/active_data/model/lifecycle.rb +307 -0
- data/lib/active_data/model/localization.rb +21 -0
- data/lib/active_data/model/persistence.rb +57 -0
- data/lib/active_data/model/primary.rb +51 -0
- data/lib/active_data/model/scopes.rb +77 -0
- data/lib/active_data/model/validations.rb +27 -0
- data/lib/active_data/model/validations/associated.rb +19 -0
- data/lib/active_data/model/validations/nested.rb +39 -0
- data/lib/active_data/railtie.rb +7 -0
- data/lib/active_data/version.rb +1 -1
- data/spec/lib/active_data/active_record/associations_spec.rb +149 -0
- data/spec/lib/active_data/active_record/nested_attributes_spec.rb +16 -0
- data/spec/lib/active_data/config_spec.rb +44 -0
- data/spec/lib/active_data/model/associations/embeds_many_spec.rb +362 -52
- data/spec/lib/active_data/model/associations/embeds_one_spec.rb +250 -31
- data/spec/lib/active_data/model/associations/nested_attributes_spec.rb +23 -0
- data/spec/lib/active_data/model/associations/references_many_spec.rb +196 -0
- data/spec/lib/active_data/model/associations/references_one_spec.rb +134 -0
- data/spec/lib/active_data/model/associations/reflections/embeds_many_spec.rb +144 -0
- data/spec/lib/active_data/model/associations/reflections/embeds_one_spec.rb +116 -0
- data/spec/lib/active_data/model/associations/reflections/references_many_spec.rb +255 -0
- data/spec/lib/active_data/model/associations/reflections/references_one_spec.rb +208 -0
- data/spec/lib/active_data/model/associations/validations_spec.rb +153 -0
- data/spec/lib/active_data/model/associations_spec.rb +189 -0
- data/spec/lib/active_data/model/attributes/attribute_spec.rb +144 -0
- data/spec/lib/active_data/model/attributes/base_spec.rb +82 -0
- data/spec/lib/active_data/model/attributes/collection_spec.rb +73 -0
- data/spec/lib/active_data/model/attributes/dictionary_spec.rb +93 -0
- data/spec/lib/active_data/model/attributes/localized_spec.rb +88 -33
- data/spec/lib/active_data/model/attributes/reflections/attribute_spec.rb +72 -0
- data/spec/lib/active_data/model/attributes/reflections/base_spec.rb +56 -0
- data/spec/lib/active_data/model/attributes/reflections/collection_spec.rb +37 -0
- data/spec/lib/active_data/model/attributes/reflections/dictionary_spec.rb +43 -0
- data/spec/lib/active_data/model/attributes/reflections/localized_spec.rb +37 -0
- data/spec/lib/active_data/model/attributes/reflections/represents_spec.rb +70 -0
- data/spec/lib/active_data/model/attributes/represents_spec.rb +153 -0
- data/spec/lib/active_data/model/attributes_spec.rb +243 -0
- data/spec/lib/active_data/model/callbacks_spec.rb +338 -0
- data/spec/lib/active_data/model/conventions_spec.rb +12 -0
- data/spec/lib/active_data/model/dirty_spec.rb +75 -0
- data/spec/lib/active_data/model/lifecycle_spec.rb +330 -0
- data/spec/lib/active_data/model/nested_attributes.rb +202 -0
- data/spec/lib/active_data/model/persistence_spec.rb +47 -0
- data/spec/lib/active_data/model/primary_spec.rb +84 -0
- data/spec/lib/active_data/model/scopes_spec.rb +88 -0
- data/spec/lib/active_data/model/typecasting_spec.rb +192 -0
- data/spec/lib/active_data/model/validations/associated_spec.rb +94 -0
- data/spec/lib/active_data/model/validations/nested_spec.rb +93 -0
- data/spec/lib/active_data/model/validations_spec.rb +31 -0
- data/spec/lib/active_data/model_spec.rb +1 -32
- data/spec/lib/active_data_spec.rb +12 -0
- data/spec/spec_helper.rb +39 -0
- data/spec/support/model_helpers.rb +10 -0
- metadata +246 -54
- data/gemfiles/Gemfile.rails-3 +0 -14
- data/lib/active_data/attributes/base.rb +0 -69
- data/lib/active_data/attributes/localized.rb +0 -42
- data/lib/active_data/model/associations/association.rb +0 -30
- data/lib/active_data/model/attributable.rb +0 -122
- data/lib/active_data/model/collectionizable.rb +0 -55
- data/lib/active_data/model/collectionizable/proxy.rb +0 -42
- data/lib/active_data/model/extensions.rb +0 -9
- data/lib/active_data/model/extensions/array.rb +0 -24
- data/lib/active_data/model/extensions/big_decimal.rb +0 -17
- data/lib/active_data/model/extensions/boolean.rb +0 -38
- data/lib/active_data/model/extensions/date.rb +0 -17
- data/lib/active_data/model/extensions/date_time.rb +0 -17
- data/lib/active_data/model/extensions/float.rb +0 -17
- data/lib/active_data/model/extensions/hash.rb +0 -22
- data/lib/active_data/model/extensions/integer.rb +0 -17
- data/lib/active_data/model/extensions/localized.rb +0 -22
- data/lib/active_data/model/extensions/object.rb +0 -17
- data/lib/active_data/model/extensions/string.rb +0 -17
- data/lib/active_data/model/extensions/time.rb +0 -17
- data/lib/active_data/model/localizable.rb +0 -31
- data/lib/active_data/model/nested_attributes.rb +0 -58
- data/lib/active_data/model/parameterizable.rb +0 -29
- data/lib/active_data/validations.rb +0 -7
- data/lib/active_data/validations/associated.rb +0 -17
- data/spec/lib/active_data/model/attributable_spec.rb +0 -191
- data/spec/lib/active_data/model/collectionizable_spec.rb +0 -60
- data/spec/lib/active_data/model/nested_attributes_spec.rb +0 -67
- data/spec/lib/active_data/model/type_cast_spec.rb +0 -116
- data/spec/lib/active_data/validations/associated_spec.rb +0 -88
data/gemfiles/Gemfile.rails-3
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
source "http://rubygems.org"
|
2
|
-
|
3
|
-
gemspec path: '../'
|
4
|
-
|
5
|
-
gem 'activesupport', '~> 3.0'
|
6
|
-
gem 'activemodel', '~> 3.0'
|
7
|
-
|
8
|
-
group :test do
|
9
|
-
gem 'guard'
|
10
|
-
gem 'guard-rspec'
|
11
|
-
gem 'rb-inotify', require: false
|
12
|
-
gem 'rb-fsevent', require: false
|
13
|
-
gem 'rb-fchange', require: false
|
14
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
module ActiveData
|
2
|
-
module Attributes
|
3
|
-
class Base
|
4
|
-
attr_reader :name, :options
|
5
|
-
|
6
|
-
def initialize name, options = {}, &block
|
7
|
-
@name = name.to_sym
|
8
|
-
@options = options
|
9
|
-
@options[:default] = block if block
|
10
|
-
end
|
11
|
-
|
12
|
-
def type
|
13
|
-
@type ||= options[:type] || Object
|
14
|
-
end
|
15
|
-
|
16
|
-
def values
|
17
|
-
@values ||= options[:in].dup if options[:in]
|
18
|
-
end
|
19
|
-
|
20
|
-
def default
|
21
|
-
@default ||= @options[:default]
|
22
|
-
end
|
23
|
-
|
24
|
-
def default_blank?
|
25
|
-
@default_blank ||= !!@options[:default_blank]
|
26
|
-
end
|
27
|
-
|
28
|
-
def default_value instance
|
29
|
-
default.respond_to?(:call) ? default.call(instance) : default unless default.nil?
|
30
|
-
end
|
31
|
-
|
32
|
-
def type_cast value
|
33
|
-
return value if value.instance_of?(type)
|
34
|
-
type.active_data_type_cast(value)
|
35
|
-
end
|
36
|
-
|
37
|
-
def generate_instance_methods context
|
38
|
-
context.class_eval <<-EOS
|
39
|
-
def #{name}
|
40
|
-
read_attribute(:#{name})
|
41
|
-
end
|
42
|
-
|
43
|
-
def #{name}= value
|
44
|
-
write_attribute(:#{name}, value)
|
45
|
-
end
|
46
|
-
|
47
|
-
def #{name}?
|
48
|
-
read_attribute(:#{name}).present?
|
49
|
-
end
|
50
|
-
|
51
|
-
def #{name}_before_type_cast
|
52
|
-
read_attribute_before_type_cast(:#{name})
|
53
|
-
end
|
54
|
-
EOS
|
55
|
-
end
|
56
|
-
|
57
|
-
def generate_class_methods context
|
58
|
-
if values
|
59
|
-
context.class_eval <<-EOS
|
60
|
-
def #{name}_values
|
61
|
-
_attributes[:#{name}].values
|
62
|
-
end
|
63
|
-
EOS
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module ActiveData
|
2
|
-
module Attributes
|
3
|
-
class Localized < Base
|
4
|
-
|
5
|
-
def default_value *args
|
6
|
-
{}
|
7
|
-
end
|
8
|
-
|
9
|
-
def generate_instance_methods context
|
10
|
-
context.class_eval <<-EOS
|
11
|
-
def #{name}_translations
|
12
|
-
read_attribute(:#{name})
|
13
|
-
end
|
14
|
-
|
15
|
-
def #{name}_translations= value
|
16
|
-
write_attribute(:#{name}, value)
|
17
|
-
end
|
18
|
-
|
19
|
-
def #{name}
|
20
|
-
read_localized_attribute(:#{name})
|
21
|
-
end
|
22
|
-
|
23
|
-
def #{name}= value
|
24
|
-
write_localized_attribute(:#{name}, value)
|
25
|
-
end
|
26
|
-
|
27
|
-
def #{name}?
|
28
|
-
read_localized_attribute(:#{name}).present?
|
29
|
-
end
|
30
|
-
|
31
|
-
def #{name}_before_type_cast
|
32
|
-
read_localized_attribute_before_type_cast(:#{name})
|
33
|
-
end
|
34
|
-
EOS
|
35
|
-
end
|
36
|
-
|
37
|
-
def generate_class_methods context
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module ActiveData
|
2
|
-
module Model
|
3
|
-
module Associations
|
4
|
-
class Association
|
5
|
-
attr_reader :name, :klass, :options
|
6
|
-
|
7
|
-
def initialize name, options = {}
|
8
|
-
@name, @options = name.to_s, options
|
9
|
-
@klass ||= options[:class] || (options[:class_name].to_s.presence || name.to_s.classify).safe_constantize
|
10
|
-
raise "Can not determine class for `#{name}` association" unless @klass
|
11
|
-
end
|
12
|
-
|
13
|
-
def class_name
|
14
|
-
klass.to_s
|
15
|
-
end
|
16
|
-
|
17
|
-
def define_accessor klass
|
18
|
-
define_reader klass
|
19
|
-
define_writer klass
|
20
|
-
end
|
21
|
-
|
22
|
-
def define_reader klass
|
23
|
-
end
|
24
|
-
|
25
|
-
def define_writer klass
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,122 +0,0 @@
|
|
1
|
-
module ActiveData
|
2
|
-
module Model
|
3
|
-
module Attributable
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
class_attribute :_attributes, :instance_reader => false, :instance_writer => false
|
8
|
-
self._attributes = {}
|
9
|
-
|
10
|
-
delegate :attribute_default, :to => 'self.class'
|
11
|
-
end
|
12
|
-
|
13
|
-
module ClassMethods
|
14
|
-
def attribute name, options = {}, &block
|
15
|
-
attribute = build_attribute(name, options, &block)
|
16
|
-
self._attributes = _attributes.merge(attribute.name => attribute)
|
17
|
-
|
18
|
-
attribute.generate_instance_methods generated_instance_attributes_methods
|
19
|
-
attribute.generate_class_methods generated_class_attributes_methods
|
20
|
-
attribute
|
21
|
-
end
|
22
|
-
|
23
|
-
def build_attribute name, options = {}, &block
|
24
|
-
klass = case options[:type].to_s
|
25
|
-
when 'Localized'
|
26
|
-
ActiveData::Attributes::Localized
|
27
|
-
else
|
28
|
-
ActiveData::Attributes::Base
|
29
|
-
end
|
30
|
-
klass.new name, options, &block
|
31
|
-
end
|
32
|
-
|
33
|
-
def generated_class_attributes_methods
|
34
|
-
@generated_class_attributes_methods ||= Module.new.tap { |proxy| extend proxy }
|
35
|
-
end
|
36
|
-
|
37
|
-
def generated_instance_attributes_methods
|
38
|
-
@generated_instance_attributes_methods ||= Module.new.tap { |proxy| include proxy }
|
39
|
-
end
|
40
|
-
|
41
|
-
def initialize_attributes
|
42
|
-
Hash[_attributes.map { |(name, _)| [name, nil] }]
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def read_attribute name
|
47
|
-
name = name.to_sym
|
48
|
-
if attributes_cache.key? name
|
49
|
-
attributes_cache[name]
|
50
|
-
else
|
51
|
-
attribute = self.class._attributes[name]
|
52
|
-
value = attribute.type_cast @attributes[name]
|
53
|
-
use_default = attribute.default_blank? && value.respond_to?(:empty?) ? value.empty? : value.nil?
|
54
|
-
attributes_cache[name] = use_default ? attribute.default_value(self) : value
|
55
|
-
end
|
56
|
-
end
|
57
|
-
alias_method :[], :read_attribute
|
58
|
-
|
59
|
-
def has_attribute? name
|
60
|
-
@attributes.key? name.to_sym
|
61
|
-
end
|
62
|
-
|
63
|
-
def read_attribute_before_type_cast name
|
64
|
-
@attributes[name.to_sym]
|
65
|
-
end
|
66
|
-
|
67
|
-
def write_attribute name, value
|
68
|
-
name = name.to_sym
|
69
|
-
attributes_cache.delete name
|
70
|
-
@attributes[name] = value
|
71
|
-
end
|
72
|
-
alias_method :[]=, :write_attribute
|
73
|
-
|
74
|
-
def attributes
|
75
|
-
Hash[attribute_names.map { |name| [name, send(name)] }]
|
76
|
-
end
|
77
|
-
|
78
|
-
def present_attributes
|
79
|
-
Hash[attribute_names.map do |name|
|
80
|
-
value = send(name)
|
81
|
-
[name, value] unless value.respond_to?(:empty?) ? value.empty? : value.nil?
|
82
|
-
end.compact]
|
83
|
-
end
|
84
|
-
|
85
|
-
def attribute_names
|
86
|
-
@attributes.keys
|
87
|
-
end
|
88
|
-
|
89
|
-
def attributes= attributes
|
90
|
-
assign_attributes(attributes)
|
91
|
-
end
|
92
|
-
alias_method :update_attributes, :attributes=
|
93
|
-
|
94
|
-
def write_attributes attributes
|
95
|
-
attributes.each { |(name, value)| send("#{name}=", value) }
|
96
|
-
end
|
97
|
-
|
98
|
-
def reverse_update_attributes attributes
|
99
|
-
reverse_assign_attributes(attributes)
|
100
|
-
end
|
101
|
-
|
102
|
-
private
|
103
|
-
|
104
|
-
def attributes_cache
|
105
|
-
@attributes_cache ||= {}
|
106
|
-
end
|
107
|
-
|
108
|
-
def assign_attributes attributes
|
109
|
-
(attributes.presence || {}).each do |(name, value)|
|
110
|
-
send("#{name}=", value) if has_attribute?(name) || respond_to?("#{name}=")
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
def reverse_assign_attributes attributes
|
115
|
-
(attributes.presence || {}).each do |(name, value)|
|
116
|
-
send("#{name}=", value) if respond_to?("#{name}=") && respond_to?(name) && send(name).blank?
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'active_data/model/collectionizable/proxy'
|
2
|
-
|
3
|
-
module ActiveData
|
4
|
-
module Model
|
5
|
-
module Collectionizable
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
|
8
|
-
included do
|
9
|
-
class_attribute :_collection_superclass
|
10
|
-
collectionize
|
11
|
-
end
|
12
|
-
|
13
|
-
module ClassMethods
|
14
|
-
|
15
|
-
def collectionize collection_superclass = Array
|
16
|
-
self._collection_superclass = collection_superclass
|
17
|
-
end
|
18
|
-
|
19
|
-
def respond_to_missing? method, include_private
|
20
|
-
super || collection_class.superclass.method_defined?(method)
|
21
|
-
end
|
22
|
-
|
23
|
-
def method_missing method, *args, &block
|
24
|
-
collection_class.superclass.method_defined?(method) ?
|
25
|
-
current_scope.send(method, *args, &block) :
|
26
|
-
super
|
27
|
-
end
|
28
|
-
|
29
|
-
def collection source = nil
|
30
|
-
collection_class.new source
|
31
|
-
end
|
32
|
-
|
33
|
-
def collection_class
|
34
|
-
@collection_class ||= begin
|
35
|
-
Class.new(_collection_superclass) do
|
36
|
-
include ActiveData::Model::Collectionizable::Proxy
|
37
|
-
end.tap { |klass| klass.collectible = self }
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def current_scope= value
|
42
|
-
@current_scope = value
|
43
|
-
end
|
44
|
-
|
45
|
-
def current_scope
|
46
|
-
@current_scope ||= collection(load)
|
47
|
-
end
|
48
|
-
alias :scope :current_scope
|
49
|
-
|
50
|
-
def load; end
|
51
|
-
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module ActiveData
|
2
|
-
module Model
|
3
|
-
module Collectionizable
|
4
|
-
module Proxy
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
included do
|
8
|
-
class_attribute :collectible
|
9
|
-
|
10
|
-
def initialize source = nil
|
11
|
-
source ||= self.class.superclass.new
|
12
|
-
super source.map { |entity| collectible.instantiate(entity) }
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def respond_to? method
|
17
|
-
super || collectible.respond_to?(method)
|
18
|
-
end
|
19
|
-
|
20
|
-
def method_missing method, *args, &block
|
21
|
-
result = with_scope { collectible.send(method, *args, &block) }
|
22
|
-
result = self.class.new result if result.instance_of? self.class.superclass
|
23
|
-
result
|
24
|
-
end
|
25
|
-
|
26
|
-
def with_scope
|
27
|
-
previous_scope = collectible.current_scope
|
28
|
-
collectible.current_scope = self
|
29
|
-
result = yield
|
30
|
-
collectible.current_scope = previous_scope
|
31
|
-
result
|
32
|
-
end
|
33
|
-
|
34
|
-
module ClassMethods
|
35
|
-
def active_data_type_cast value
|
36
|
-
new value
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module ActiveData
|
2
|
-
module Model
|
3
|
-
module Extensions
|
4
|
-
module Array
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
module ClassMethods
|
8
|
-
def active_data_type_cast value
|
9
|
-
case value
|
10
|
-
when ::Array then
|
11
|
-
value
|
12
|
-
when ::String then
|
13
|
-
value.split(',').map(&:strip)
|
14
|
-
else
|
15
|
-
nil
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
Array.send :include, ActiveData::Model::Extensions::Array
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module ActiveData
|
2
|
-
module Model
|
3
|
-
module Extensions
|
4
|
-
module BigDecimal
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
module ClassMethods
|
8
|
-
def active_data_type_cast value
|
9
|
-
::BigDecimal.new Float(value).to_s rescue nil if value
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
BigDecimal.send :include, ActiveData::Model::Extensions::BigDecimal
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module ActiveData
|
2
|
-
module Model
|
3
|
-
module Extensions
|
4
|
-
module Boolean
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
MAPPING = {
|
8
|
-
1 => true,
|
9
|
-
0 => false,
|
10
|
-
'1' => true,
|
11
|
-
'0' => false,
|
12
|
-
't' => true,
|
13
|
-
'f' => false,
|
14
|
-
'T' => true,
|
15
|
-
'F' => false,
|
16
|
-
true => true,
|
17
|
-
false => false,
|
18
|
-
'true' => true,
|
19
|
-
'false' => false,
|
20
|
-
'TRUE' => true,
|
21
|
-
'FALSE' => false,
|
22
|
-
'y' => true,
|
23
|
-
'n' => false,
|
24
|
-
'yes' => true,
|
25
|
-
'no' => false,
|
26
|
-
}
|
27
|
-
|
28
|
-
module ClassMethods
|
29
|
-
def active_data_type_cast value
|
30
|
-
MAPPING[value]
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
Boolean.send :include, ActiveData::Model::Extensions::Boolean
|