baseapi 0.1.24 → 0.1.25
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/baseapi/active_record/relation_extension.rb +39 -13
- data/lib/baseapi/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25e5520506f037fce90f73374e06640c124f2b74
|
4
|
+
data.tar.gz: f95d92c2f4a326c7f1f798a3b88403dbce01af0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82f792e4c93ddb83b4ae0e67d2da016edff044f1b8cbfbd14cf40acd8dd805f2e11fa98dedaf6b255b3e40c8a26dcdbf3bb4affd2f71d198caf0426f18e55ff0
|
7
|
+
data.tar.gz: 52a922a6cc3fc4c773ef2c0af598edbee4501a1ae089c6e7c4b8d19349acb968ed35cc82660ac1be24b050e9c3c72ab9531ad8730133327f6c5163264dcd336c
|
@@ -80,20 +80,46 @@ module ActiveRecordRelationExtension
|
|
80
80
|
joins_tables = orderby.split(".")
|
81
81
|
column_name = joins_tables.pop
|
82
82
|
table_name = joins_tables.count > 0 ? joins_tables.last.pluralize.underscore : self.model.to_s.pluralize.underscore
|
83
|
-
#
|
84
|
-
|
85
|
-
|
86
|
-
|
83
|
+
# table_name parent table
|
84
|
+
parent_table_name = joins_tables.count > 1 ? joins_tables.last(2).first : self.model.to_s.pluralize.underscore
|
85
|
+
# parent_table get association
|
86
|
+
association = parent_table_name.camelize.singularize.constantize.reflect_on_association(table_name.singularize)
|
87
|
+
# If you have specified class_name in belongs_to method (for example, you have changed the foreign key)
|
88
|
+
# example:
|
89
|
+
# class Project < ActiveRecord::Base
|
90
|
+
# belongs_to :manager, foreign_key: 'manager_id', class_name: 'User'
|
91
|
+
# belongs_to :leader, foreign_key: 'leader_id', class_name: 'User'
|
92
|
+
# end
|
93
|
+
if association and association.options[:class_name].present?
|
94
|
+
association_table_name = association.options[:class_name].pluralize.underscore
|
95
|
+
table_alias = table_name.pluralize.underscore
|
96
|
+
# check
|
97
|
+
next if !ActiveRecord::Base.connection.tables.include?(association_table_name)
|
98
|
+
# join
|
99
|
+
joins!("INNER JOIN `#{association_table_name}` AS `#{table_alias}` ON `#{table_alias}`.`id` = `#{parent_table_name}`.`#{table_alias.singularize}_id`")
|
100
|
+
# order
|
101
|
+
order!("`#{table_alias}`.`#{column_name}` #{order}")
|
102
|
+
# belongs_to along the rails convention
|
103
|
+
# example:
|
104
|
+
# class Project < ActiveRecord::Base
|
105
|
+
# belongs_to :manager
|
106
|
+
# end
|
107
|
+
else
|
108
|
+
# joins_tables exists check
|
109
|
+
is_next = false
|
110
|
+
joins_tables.each do |table|
|
111
|
+
is_next = true and break if !ActiveRecord::Base.connection.tables.include?(table.pluralize.underscore)
|
112
|
+
end
|
113
|
+
next if is_next
|
114
|
+
# table exists check
|
115
|
+
next if !ActiveRecord::Base.connection.tables.include?(table_name)
|
116
|
+
# column_name exists check
|
117
|
+
next if !table_name.camelize.singularize.constantize.column_names.include?(column_name)
|
118
|
+
# joins
|
119
|
+
joins_array!(joins_tables)
|
120
|
+
# order
|
121
|
+
order!("`#{table_name}`.`#{column_name}` #{order}")
|
87
122
|
end
|
88
|
-
next if is_next
|
89
|
-
# table exists check
|
90
|
-
next if !ActiveRecord::Base.connection.tables.include?(table_name)
|
91
|
-
# column_name exists check
|
92
|
-
next if !table_name.camelize.singularize.constantize.column_names.include?(column_name)
|
93
|
-
# joins
|
94
|
-
joins_array!(joins_tables)
|
95
|
-
# order
|
96
|
-
order!("`#{table_name}`.`#{column_name}` #{order}")
|
97
123
|
end
|
98
124
|
end
|
99
125
|
end
|
data/lib/baseapi/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: baseapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Moriyuki Arakawa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|