Skip to content

Instantly share code, notes, and snippets.

@ruvaleev
Created May 18, 2021 08:41
Show Gist options
  • Save ruvaleev/e8b33c79a90dbf10b55f21df22cc52ae to your computer and use it in GitHub Desktop.
Save ruvaleev/e8b33c79a90dbf10b55f21df22cc52ae to your computer and use it in GitHub Desktop.
Ранзакер director для модели projects
ransacker :director do
subquery = <<-SQL.squish
(
SELECT users.lastname
FROM users
LEFT OUTER JOIN members ON members.project_id = projects.id
LEFT OUTER JOIN member_roles ON member_roles.member_id = members.id
LEFT OUTER JOIN roles ON roles.id = member_roles.role_id
WHERE roles.id = 8 AND projects.id = projects.id
LIMIT 1
)
SQL
Arel.sql(subquery)
end
__END__
# Вот такие результаты дает это при тесте локально (и при тесте через вьюху-контроллер то же самое).
# Даже с учетом неправильной сортировки, мне кажется, что ранзакер я написал неправильно, и он не работает.
projects = Project.find_by_sql("SELECT * from projects ORDER BY #{subquery} ASC")
projects.map { |project| project.principals_by_role[Role.find_by(id: 8)]&.first&.name(:ministry) }
# DESC = [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "Сташевская Г.", "Сташевская Г.", "Журавлев В.", "Терещенков А.", "Дзюба М.", "Зубков М.", "Журавлев В.", "Ярополов Я.", "Ярополов Я.", "Поплаухин Д.", "Колыхалов А.", "Никончук В.", "Солодова М.", "Доронкин А.", "Солодова М.", "Поплаухин Д.", "Корженевская А.", "Цветков С.", "Сташевская Г.", "Чистяков А.", "Волев Е.", "Головин А.", "Смирнов А.", "Смирнов А.", "Дзюба М.", "Корженевская А.", "Журавлев В.", "Рахманов В.", "Трубникова Т.", "Кунцевич А.", "Зарипов Т.", "Ерохин М.", "Алексеенко О.", "Скуратова Т.", "Сергиенко С.", "Поплаухин Д.", "Дикий А.", "Волков Д.", "Коноплянов А.", "Парфенов С.", "Рахманов В.", "Никитин К.", "Поплаухин Д.", "Шабанов Ю.", "Гвоздева Н.", "Цветков С.", "Коноплянов А.", "Сташевская Г.", "Коноплянов А.", "Ковалев А.", "Корженевская А.", "Поплаухин Д.", "Поплаухин Д.", "Журавлев В.", "Котишевский А.", "Смирнов А.", "Михайлов Ю.", "Глазунова К.", "Алексеенко О.", "Радужан А.", "Яковлева С.", "Трубникова Т.", "Журавлев В.", "Тихонов А.", "Глазунова К."]
# ASC = ["Котишевский А.", "Шабанов Ю.", "Гвоздева Н.", "Цветков С.", "Коноплянов А.", "Сташевская Г.", "Коноплянов А.", "Ковалев А.", "Корженевская А.", "Поплаухин Д.", "Поплаухин Д.", "Журавлев В.", "Смирнов А.", "Михайлов Ю.", "Глазунова К.", "Алексеенко О.", "Радужан А.", "Яковлева С.", "Трубникова Т.", "Журавлев В.", "Тихонов А.", "Глазунова К.", "Сташевская Г.", "Сташевская Г.", "Журавлев В.", "Терещенков А.", "Дзюба М.", "Зубков М.", "Журавлев В.", "Ярополов Я.", "Ярополов Я.", "Поплаухин Д.", "Колыхалов А.", "Никончук В.", "Солодова М.", "Доронкин А.", "Солодова М.", "Поплаухин Д.", "Корженевская А.", "Цветков С.", "Сташевская Г.", "Чистяков А.", "Волев Е.", "Головин А.", "Смирнов А.", "Смирнов А.", "Дзюба М.", "Корженевская А.", "Журавлев В.", "Рахманов В.", "Трубникова Т.", "Кунцевич А.", "Зарипов Т.", "Ерохин М.", "Алексеенко О.", "Скуратова Т.", "Сергиенко С.", "Поплаухин Д.", "Дикий А.", "Волков Д.", "Коноплянов А.", "Парфенов С.", "Рахманов В.", "Никитин К.", "Поплаухин Д.", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment