eac_rails_utils 0.20.0 → 0.22.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/lib/activemodel/associations.rb +3 -3
- data/lib/eac_rails_utils/engine_helper.rb +12 -0
- data/lib/eac_rails_utils/menus/action.rb +33 -0
- data/lib/eac_rails_utils/menus/group.rb +73 -0
- data/lib/eac_rails_utils/menus/node.rb +50 -0
- data/lib/eac_rails_utils/menus.rb +9 -0
- data/lib/eac_rails_utils/models/tableless/strict_loading.rb +25 -0
- data/lib/eac_rails_utils/models/tableless.rb +1 -1
- data/lib/{active_model/associations → eac_rails_utils/models/tableless_associations}/active_record_reflection.rb +1 -1
- data/lib/{active_model/associations → eac_rails_utils/models/tableless_associations}/association_scope_extension.rb +1 -1
- data/lib/{active_model/associations → eac_rails_utils/models/tableless_associations}/autosave_association.rb +1 -1
- data/lib/eac_rails_utils/models/tableless_associations/hooks.rb +10 -0
- data/lib/{active_model/associations → eac_rails_utils/models/tableless_associations}/initialize_extension.rb +1 -1
- data/lib/{active_model/associations → eac_rails_utils/models/tableless_associations}/override_methods.rb +1 -1
- data/lib/eac_rails_utils/models/tableless_associations/railtie.rb +7 -0
- data/lib/eac_rails_utils/models/tableless_associations.rb +54 -0
- data/lib/eac_rails_utils/patches/active_model/naming.rb +17 -0
- data/lib/eac_rails_utils/patches/active_model.rb +4 -0
- data/lib/eac_rails_utils/patches/active_model_associations.rb +22 -20
- data/lib/eac_rails_utils/patches/application.rb +12 -0
- data/lib/eac_rails_utils/patches/rails_4.rb +1 -1
- data/lib/eac_rails_utils/patches/rails_5_2/active_model_association_method_fix.rb +1 -1
- data/lib/eac_rails_utils/patches/rails_5_2.rb +1 -1
- data/lib/eac_rails_utils/version.rb +1 -1
- metadata +27 -41
- data/lib/active_model/associations/hooks.rb +0 -10
- data/lib/active_model/associations/railtie.rb +0 -7
- data/lib/active_model/associations.rb +0 -52
- /data/lib/{active_model/associations → eac_rails_utils/models/tableless_associations}/version.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d70491a91afe401a5ff75d1ecf1d1820e9164bb725d33ecbf5a233508e70faa
|
4
|
+
data.tar.gz: 59c3693a4563491e0da78bf4496d620c75025b7b70fb4cda760405ac04c3f436
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed28ed741a6dc380f97f1b3a1af9afaba32baebeee1c06ccf81790eab178ac8eadf022051a3dd5dffd98c01bf421fc749ce69d4db8b4a078c8d347795a286949
|
7
|
+
data.tar.gz: d5b26dc72e4a8d36e9b609b606a95264432c81e612a08fa705c40da2db94fe3e6ba23108121f170dcd1f395cea969133c6799ab15ccb6520e0f3a8a22e2ed025
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require "active_model"
|
2
2
|
require "active_record"
|
3
3
|
require "active_support"
|
4
|
-
require "
|
5
|
-
require "
|
4
|
+
require "eac_rails_utils/models/tableless_associations"
|
5
|
+
require "eac_rails_utils/models/tableless_associations/hooks"
|
6
6
|
|
7
7
|
# Load Railtie
|
8
8
|
begin
|
@@ -11,5 +11,5 @@ rescue LoadError
|
|
11
11
|
end
|
12
12
|
|
13
13
|
if defined?(Rails)
|
14
|
-
require "
|
14
|
+
require "eac_rails_utils/models/tableless_associations/railtie"
|
15
15
|
end
|
@@ -4,6 +4,13 @@ require 'eac_ruby_utils/core_ext'
|
|
4
4
|
|
5
5
|
module EacRailsUtils
|
6
6
|
module EngineHelper
|
7
|
+
class << self
|
8
|
+
# @return [EacRailsUtils::Menus::Group]
|
9
|
+
def root_menu
|
10
|
+
@root_menu ||= ::EacRailsUtils::Menus::Group.new(:root)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
7
14
|
common_concern do
|
8
15
|
append_autoload_paths
|
9
16
|
append_self_migrations
|
@@ -21,6 +28,11 @@ module EacRailsUtils
|
|
21
28
|
end
|
22
29
|
end
|
23
30
|
end
|
31
|
+
|
32
|
+
# @return [EacRailsUtils::Menus::Group]
|
33
|
+
def root_menu
|
34
|
+
::EacRailsUtils::EnginesHelper.root_menu
|
35
|
+
end
|
24
36
|
end
|
25
37
|
end
|
26
38
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_rails_utils/menus/node'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module EacRailsUtils
|
7
|
+
module Menus
|
8
|
+
class Action < ::EacRailsUtils::Menus::Node
|
9
|
+
common_constructor :path, :parent_group, super_args: -> { [parent_group] } do
|
10
|
+
self.path = [parent_group.path_first_node] + path if path.size < 2
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [Symbol]
|
14
|
+
def key
|
15
|
+
path.map(&:to_s).join('_').to_sym
|
16
|
+
end
|
17
|
+
|
18
|
+
# @param view [ActionView::Base]
|
19
|
+
# @return [Array]
|
20
|
+
def to_dropdown_menu_entries(view)
|
21
|
+
[view_path(view)]
|
22
|
+
end
|
23
|
+
|
24
|
+
# @param view [ActionView::Base]
|
25
|
+
# @return [String]
|
26
|
+
def view_path(view)
|
27
|
+
path.each_with_index.inject(view) do |a, e|
|
28
|
+
a.send(e[1] == path.count - 1 ? "#{e[0]}_path" : e[0])
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_rails_utils/menus/action'
|
4
|
+
require 'eac_rails_utils/menus/node'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
6
|
+
|
7
|
+
module EacRailsUtils
|
8
|
+
module Menus
|
9
|
+
class Group < ::EacRailsUtils::Menus::Node
|
10
|
+
class << self
|
11
|
+
# @param key [Object]
|
12
|
+
# @return [Symbol]
|
13
|
+
def sanitize_key(key)
|
14
|
+
key.to_sym
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
DEFAULT_PATH_FIRST_NODE = :main_app
|
19
|
+
SELF_LABEL_TRANSLATE_KEY_PART = '__self'
|
20
|
+
|
21
|
+
common_constructor :key, :parent_group, :path_first_node, default: [nil],
|
22
|
+
super_args: -> { [parent_group] } do
|
23
|
+
self.key = self.class.sanitize_key(key)
|
24
|
+
self.path_first_node ||= DEFAULT_PATH_FIRST_NODE
|
25
|
+
end
|
26
|
+
|
27
|
+
# @param path [Array<Symbol>]
|
28
|
+
# @return [EacRailsUtils::Menus::Action]
|
29
|
+
def action(*path)
|
30
|
+
child_action = ::EacRailsUtils::Menus::Action.new(path, self)
|
31
|
+
actions[child_action.key] ||= child_action
|
32
|
+
end
|
33
|
+
|
34
|
+
# @return [Array<EacRailsUtils::Menus::Node>]
|
35
|
+
def children
|
36
|
+
(groups.values + actions.values).sort
|
37
|
+
end
|
38
|
+
|
39
|
+
# @return [EacRailsUtils::Menus::Group]
|
40
|
+
def group(group_key, path_first_node = nil)
|
41
|
+
child_group = self.class.new(group_key, self, path_first_node)
|
42
|
+
groups[child_group.key] ||= child_group
|
43
|
+
end
|
44
|
+
|
45
|
+
# @return [String]
|
46
|
+
def label_translate_key
|
47
|
+
[super, SELF_LABEL_TRANSLATE_KEY_PART].join(TRANSLATE_KEY_SEPARATOR)
|
48
|
+
end
|
49
|
+
|
50
|
+
# @param view [ActionView::Base]
|
51
|
+
# @return [Hash]
|
52
|
+
def to_dropdown_menu_entries(view)
|
53
|
+
children.inject({}) do |a, e|
|
54
|
+
a.merge(e.label => e.to_dropdown_menu_entries(view))
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def within
|
59
|
+
yield(self)
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def actions
|
65
|
+
@actions ||= {}
|
66
|
+
end
|
67
|
+
|
68
|
+
def groups
|
69
|
+
@groups ||= {}
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EacRailsUtils
|
6
|
+
module Menus
|
7
|
+
class Node
|
8
|
+
LABEL_TRANSLATE_KEY_PREFIX = 'eac_rails_utils.menus'
|
9
|
+
TRANSLATE_KEY_SEPARATOR = '.'
|
10
|
+
|
11
|
+
acts_as_abstract :key
|
12
|
+
common_constructor :parent_group
|
13
|
+
compare_by :label
|
14
|
+
attr_reader :custom_label
|
15
|
+
|
16
|
+
# @return [String]
|
17
|
+
def auto_label
|
18
|
+
::I18n.t(label_translate_key)
|
19
|
+
end
|
20
|
+
|
21
|
+
# @param custom_label [String, nil]
|
22
|
+
# @return [String, self]
|
23
|
+
def label(custom_label = nil)
|
24
|
+
if custom_label.present?
|
25
|
+
self.custom_label = custom_label
|
26
|
+
self
|
27
|
+
else
|
28
|
+
(self.custom_label || auto_label).call_if_proc
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# @return [String]
|
33
|
+
def label_translate_key
|
34
|
+
parent_label_translate_key
|
35
|
+
end
|
36
|
+
|
37
|
+
# @return [String]
|
38
|
+
def parent_label_translate_key
|
39
|
+
[
|
40
|
+
parent_group.if_present(LABEL_TRANSLATE_KEY_PREFIX, &:parent_label_translate_key),
|
41
|
+
key
|
42
|
+
].join(TRANSLATE_KEY_SEPARATOR)
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
attr_writer :custom_label
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EacRailsUtils
|
6
|
+
module Models
|
7
|
+
class Tableless
|
8
|
+
# For Rails >= '6.1'.
|
9
|
+
module StrictLoading
|
10
|
+
common_concern
|
11
|
+
|
12
|
+
class_methods do
|
13
|
+
def strict_loading?
|
14
|
+
false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [Boolean]
|
19
|
+
def strict_loading?
|
20
|
+
self.class.strict_loading?
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module EacRailsUtils::Models::TablelessAssociations
|
2
|
+
module Hooks
|
3
|
+
def self.init
|
4
|
+
ActiveSupport.on_load(:active_record) do
|
5
|
+
require 'eac_rails_utils/models/tableless_associations/association_scope_extension'
|
6
|
+
ActiveRecord::Associations::AssociationScope.send(:prepend, EacRailsUtils::Models::TablelessAssociations::AssociationScopeExtension)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'eac_rails_utils/models/tableless_associations/initialize_extension'
|
2
|
+
require 'eac_rails_utils/models/tableless_associations/active_record_reflection'
|
3
|
+
require 'eac_rails_utils/models/tableless_associations/autosave_association'
|
4
|
+
require 'eac_rails_utils/models/tableless_associations/override_methods'
|
5
|
+
require 'active_record/associations/builder/has_many_for_active_model'
|
6
|
+
require 'active_record/associations/has_many_for_active_model_association'
|
7
|
+
require 'active_support/core_ext/module'
|
8
|
+
|
9
|
+
module EacRailsUtils
|
10
|
+
module Models
|
11
|
+
module TablelessAssociations
|
12
|
+
extend ActiveSupport::Concern
|
13
|
+
|
14
|
+
include InitializeExtension
|
15
|
+
include AutosaveAssociation
|
16
|
+
include ActiveRecordReflection
|
17
|
+
include OverrideMethods
|
18
|
+
|
19
|
+
included do
|
20
|
+
mattr_accessor :belongs_to_required_by_default, instance_accessor: false
|
21
|
+
end
|
22
|
+
|
23
|
+
module ClassMethods
|
24
|
+
# define association like ActiveRecord
|
25
|
+
def belongs_to(name, scope = nil, options = {})
|
26
|
+
reflection = ActiveRecord::Associations::Builder::BelongsTo.build(self, name, scope, options)
|
27
|
+
ActiveRecord::Reflection.add_reflection self, name, reflection
|
28
|
+
end
|
29
|
+
|
30
|
+
# define association like ActiveRecord
|
31
|
+
def has_many(name, scope = nil, options = {}, &extension)
|
32
|
+
options.reverse_merge!(active_model: true, target_ids: "#{name.to_s.singularize}_ids")
|
33
|
+
if scope.is_a?(Hash)
|
34
|
+
options.merge!(scope)
|
35
|
+
scope = nil
|
36
|
+
end
|
37
|
+
|
38
|
+
reflection = ActiveRecord::Associations::Builder::HasManyForActiveModel.build(self, name, scope, options, &extension)
|
39
|
+
ActiveRecord::Reflection.add_reflection self, name, reflection
|
40
|
+
|
41
|
+
mixin = generated_association_methods
|
42
|
+
mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1
|
43
|
+
def #{options[:target_ids]}=(other_ids)
|
44
|
+
@#{options[:target_ids]} = other_ids
|
45
|
+
association(:#{name}).reset
|
46
|
+
association(:#{name}).reset_scope
|
47
|
+
@#{options[:target_ids]}
|
48
|
+
end
|
49
|
+
CODE
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_model/naming'
|
4
|
+
|
5
|
+
module ActiveModel
|
6
|
+
module Naming
|
7
|
+
# @return [String]
|
8
|
+
def plural_name
|
9
|
+
model_name.human(count: 2)
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [String]
|
13
|
+
def singular_name
|
14
|
+
model_name.human(count: 1)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -4,30 +4,32 @@ require 'activemodel/associations'
|
|
4
4
|
require 'eac_rails_utils/patches/rails_4'
|
5
5
|
require 'eac_rails_utils/patches/rails_5_2'
|
6
6
|
|
7
|
-
module
|
8
|
-
module
|
9
|
-
module
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
7
|
+
module EacRailsUtils
|
8
|
+
module Models
|
9
|
+
module TablelessAssociations
|
10
|
+
module Hooks
|
11
|
+
class << self
|
12
|
+
def init
|
13
|
+
init_rails_4 if ::EacRailsUtils::Patches::Rails4.enabled?
|
14
|
+
init_rails_5_2 if ::EacRailsUtils::Patches::Rails52.enabled?
|
15
|
+
end
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
def init_rails_4
|
18
|
+
ActiveSupport.on_load(:active_record) do
|
19
|
+
ActiveRecord::Associations::AssociationScope.prepend(
|
20
|
+
::EacRailsUtils::Patches::Rails4::ActiveRecordAssociationsAssociationScope
|
21
|
+
)
|
22
|
+
end
|
21
23
|
end
|
22
|
-
end
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
def init_rails_5_2
|
26
|
+
rails_5_2_fix_activemodel_associations_methods
|
27
|
+
end
|
27
28
|
|
28
|
-
|
29
|
-
|
30
|
-
|
29
|
+
def rails_5_2_fix_activemodel_associations_methods
|
30
|
+
%i[belongs_to has_many].each do |method|
|
31
|
+
::EacRailsUtils::Patches::Rails52::ActiveModelAssociationMethodFix.new(method)
|
32
|
+
end
|
31
33
|
end
|
32
34
|
end
|
33
35
|
end
|
metadata
CHANGED
@@ -1,43 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eac_rails_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- E.A.C.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: activemodel
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: activerecord
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
13
|
- !ruby/object:Gem::Dependency
|
42
14
|
name: bootstrap-sass
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,14 +36,20 @@ dependencies:
|
|
64
36
|
requirements:
|
65
37
|
- - "~>"
|
66
38
|
- !ruby/object:Gem::Version
|
67
|
-
version: '0.
|
39
|
+
version: '0.119'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.119.2
|
68
43
|
type: :runtime
|
69
44
|
prerelease: false
|
70
45
|
version_requirements: !ruby/object:Gem::Requirement
|
71
46
|
requirements:
|
72
47
|
- - "~>"
|
73
48
|
- !ruby/object:Gem::Version
|
74
|
-
version: '0.
|
49
|
+
version: '0.119'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 0.119.2
|
75
53
|
- !ruby/object:Gem::Dependency
|
76
54
|
name: htmlbeautifier
|
77
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -220,15 +198,6 @@ files:
|
|
220
198
|
- config/initializers/json.rb
|
221
199
|
- config/locales/en.yml
|
222
200
|
- config/locales/pt-BR.yml
|
223
|
-
- lib/active_model/associations.rb
|
224
|
-
- lib/active_model/associations/active_record_reflection.rb
|
225
|
-
- lib/active_model/associations/association_scope_extension.rb
|
226
|
-
- lib/active_model/associations/autosave_association.rb
|
227
|
-
- lib/active_model/associations/hooks.rb
|
228
|
-
- lib/active_model/associations/initialize_extension.rb
|
229
|
-
- lib/active_model/associations/override_methods.rb
|
230
|
-
- lib/active_model/associations/railtie.rb
|
231
|
-
- lib/active_model/associations/version.rb
|
232
201
|
- lib/active_record/associations/builder/has_many_for_active_model.rb
|
233
202
|
- lib/active_record/associations/has_many_for_active_model_association.rb
|
234
203
|
- lib/activemodel/associations.rb
|
@@ -236,6 +205,10 @@ files:
|
|
236
205
|
- lib/eac_rails_utils/engine.rb
|
237
206
|
- lib/eac_rails_utils/engine_helper.rb
|
238
207
|
- lib/eac_rails_utils/htmlbeautifier.rb
|
208
|
+
- lib/eac_rails_utils/menus.rb
|
209
|
+
- lib/eac_rails_utils/menus/action.rb
|
210
|
+
- lib/eac_rails_utils/menus/group.rb
|
211
|
+
- lib/eac_rails_utils/menus/node.rb
|
239
212
|
- lib/eac_rails_utils/models.rb
|
240
213
|
- lib/eac_rails_utils/models/fetch_errors.rb
|
241
214
|
- lib/eac_rails_utils/models/inequality_queries.rb
|
@@ -243,10 +216,23 @@ files:
|
|
243
216
|
- lib/eac_rails_utils/models/tableless/attributes.rb
|
244
217
|
- lib/eac_rails_utils/models/tableless/build_attributes.rb
|
245
218
|
- lib/eac_rails_utils/models/tableless/columns.rb
|
219
|
+
- lib/eac_rails_utils/models/tableless/strict_loading.rb
|
220
|
+
- lib/eac_rails_utils/models/tableless_associations.rb
|
221
|
+
- lib/eac_rails_utils/models/tableless_associations/active_record_reflection.rb
|
222
|
+
- lib/eac_rails_utils/models/tableless_associations/association_scope_extension.rb
|
223
|
+
- lib/eac_rails_utils/models/tableless_associations/autosave_association.rb
|
224
|
+
- lib/eac_rails_utils/models/tableless_associations/hooks.rb
|
225
|
+
- lib/eac_rails_utils/models/tableless_associations/initialize_extension.rb
|
226
|
+
- lib/eac_rails_utils/models/tableless_associations/override_methods.rb
|
227
|
+
- lib/eac_rails_utils/models/tableless_associations/railtie.rb
|
228
|
+
- lib/eac_rails_utils/models/tableless_associations/version.rb
|
246
229
|
- lib/eac_rails_utils/models/test_utils.rb
|
247
230
|
- lib/eac_rails_utils/models/validations.rb
|
248
231
|
- lib/eac_rails_utils/patches.rb
|
232
|
+
- lib/eac_rails_utils/patches/active_model.rb
|
233
|
+
- lib/eac_rails_utils/patches/active_model/naming.rb
|
249
234
|
- lib/eac_rails_utils/patches/active_model_associations.rb
|
235
|
+
- lib/eac_rails_utils/patches/application.rb
|
250
236
|
- lib/eac_rails_utils/patches/numeric.rb
|
251
237
|
- lib/eac_rails_utils/patches/numeric/number_helper.rb
|
252
238
|
- lib/eac_rails_utils/patches/rails_4.rb
|
@@ -1,10 +0,0 @@
|
|
1
|
-
module ActiveModel::Associations
|
2
|
-
module Hooks
|
3
|
-
def self.init
|
4
|
-
ActiveSupport.on_load(:active_record) do
|
5
|
-
require 'active_model/associations/association_scope_extension'
|
6
|
-
ActiveRecord::Associations::AssociationScope.send(:prepend, ActiveModel::Associations::AssociationScopeExtension)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'active_model/associations/initialize_extension'
|
2
|
-
require 'active_model/associations/active_record_reflection'
|
3
|
-
require 'active_model/associations/autosave_association'
|
4
|
-
require 'active_model/associations/override_methods'
|
5
|
-
require 'active_record/associations/builder/has_many_for_active_model'
|
6
|
-
require 'active_record/associations/has_many_for_active_model_association'
|
7
|
-
require 'active_support/core_ext/module'
|
8
|
-
|
9
|
-
module ActiveModel
|
10
|
-
module Associations
|
11
|
-
extend ActiveSupport::Concern
|
12
|
-
|
13
|
-
include InitializeExtension
|
14
|
-
include AutosaveAssociation
|
15
|
-
include ActiveRecordReflection
|
16
|
-
include OverrideMethods
|
17
|
-
|
18
|
-
included do
|
19
|
-
mattr_accessor :belongs_to_required_by_default, instance_accessor: false
|
20
|
-
end
|
21
|
-
|
22
|
-
module ClassMethods
|
23
|
-
# define association like ActiveRecord
|
24
|
-
def belongs_to(name, scope = nil, options = {})
|
25
|
-
reflection = ActiveRecord::Associations::Builder::BelongsTo.build(self, name, scope, options)
|
26
|
-
ActiveRecord::Reflection.add_reflection self, name, reflection
|
27
|
-
end
|
28
|
-
|
29
|
-
# define association like ActiveRecord
|
30
|
-
def has_many(name, scope = nil, options = {}, &extension)
|
31
|
-
options.reverse_merge!(active_model: true, target_ids: "#{name.to_s.singularize}_ids")
|
32
|
-
if scope.is_a?(Hash)
|
33
|
-
options.merge!(scope)
|
34
|
-
scope = nil
|
35
|
-
end
|
36
|
-
|
37
|
-
reflection = ActiveRecord::Associations::Builder::HasManyForActiveModel.build(self, name, scope, options, &extension)
|
38
|
-
ActiveRecord::Reflection.add_reflection self, name, reflection
|
39
|
-
|
40
|
-
mixin = generated_association_methods
|
41
|
-
mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1
|
42
|
-
def #{options[:target_ids]}=(other_ids)
|
43
|
-
@#{options[:target_ids]} = other_ids
|
44
|
-
association(:#{name}).reset
|
45
|
-
association(:#{name}).reset_scope
|
46
|
-
@#{options[:target_ids]}
|
47
|
-
end
|
48
|
-
CODE
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
/data/lib/{active_model/associations → eac_rails_utils/models/tableless_associations}/version.rb
RENAMED
File without changes
|