Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
simple_controller
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open-source
simple_controller
Commits
745029c0
Commit
745029c0
authored
Mar 09, 2022
by
liyijie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 增加q参数中支持jorder的需求
parent
5d9c266f
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
11 additions
and
2 deletions
+11
-2
base_controller.rb
lib/simple_controller/base_controller.rb
+11
-2
No files found.
lib/simple_controller/base_controller.rb
View file @
745029c0
...
...
@@ -280,16 +280,25 @@ class SimpleController::BaseController < ::InheritedResources::Base
unless
self
.
class
.
instance_variable_get
(
:@ransack_off
)
||
params
[
:sub_q
].
blank?
association
=
Array
(
params
[
:sub_q
][
:scopes
]).
reduce
(
association
)
{
|
_association
,
_scope
|
_association
.
send
(
_scope
)
}
if
params
[
:sub_q
][
:scopes
].
present?
association
=
ransack_association
(
association
,
params
[
:sub_q
].
except
(
:scopes
,
:refs
))
association
=
ransack_association
(
association
,
params
[
:sub_q
].
except
(
:scopes
,
:refs
,
:jorder
))
end
unless
self
.
class
.
instance_variable_get
(
:@ransack_off
)
||
params
[
:q
].
blank?
association
=
Array
(
params
[
:q
][
:scopes
]).
reduce
(
association
)
{
|
_association
,
_scope
|
_association
.
send
(
_scope
)
}
if
params
[
:q
][
:scopes
].
present?
association
=
ransack_association
(
association
,
params
[
:q
].
except
(
:scopes
,
:refs
))
association
=
ransack_association
(
association
,
params
[
:q
].
except
(
:scopes
,
:refs
,
:jorder
))
end
if
params
.
dig
(
:q
,
:refs
).
present?
_refs
=
Array
(
params
[
:q
][
:refs
]).
map
(
&
:to_sym
)
association
=
association
.
includes
(
*
_refs
).
joins
(
*
_refs
)
end
if
params
.
dig
(
:q
,
:jorder
).
present?
order_array
=
Array
(
params
.
dig
(
:q
,
:jorder
))
sql
=
order_array
.
map
do
|
order_string
|
_attr
,
_order
=
order_string
.
split
(
' '
)
_jsonb_attr
=
_attr
.
split
(
'.'
).
map
{
|
a
|
"'
#{
a
}
'"
}.
join
(
'->'
)
"
#{
_jsonb_attr
}
#{
_order
}
"
end
.
join
(
', '
)
association
=
association
.
order
(
Arel
.
sql
(
sql
))
end
association
=
association
.
distinct
unless
self
.
class
.
instance_variable_get
(
:@distinct_off
)
||
!
association
.
respond_to?
(
:distinct
)
||
!
active_record?
association
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment