Size: a a a

Ruby, Rails, Hanami | dry-rb

2020 September 11

PM

Peter Mokan in Ruby, Rails, Hanami | dry-rb
Roman Ustuantsev
товарищи, всем добрый день!
я тут пытаюсь понять, как написать запрос через актив рекорд и мне кажется, я что не то делаю

если кратко, то у меня есть плейлисты, в плейлистах книги, а у них лицензии с привязкой к территории
нужно отфильтровать книги, чтобы показывались только те, у которых лицензия с той же территорией, что и у текущего юзера

вопрос: как это лучше сделать?

если лучше напрямую через sql, то это тоже вариант, но было бы неплохо понять, как такой запрос должен выглядеть, хотя бы примерно
Book.find_by(territory: current_user.territory)
источник

SP

Sergey Pustovalov in Ruby, Rails, Hanami | dry-rb
ну там же по вопросы было понятно что человек не знает (или забыл) про джойны в sql
источник

SP

Sergey Pustovalov in Ruby, Rails, Hanami | dry-rb
Peter Mokan
Book.find_by(territory: current_user.territory)
зависит от структуры базы, скорее всего не сработает
источник

RU

Roman Ustuantsev in Ruby, Rails, Hanami | dry-rb
Peter Mokan
Book.find_by(territory: current_user.territory)
нет

там что-то вроде такого Playlist.joins(audiobook: subscriptions).where(subscription: { territory: user.territory})
источник

RU

Roman Ustuantsev in Ruby, Rails, Hanami | dry-rb
но это не работает, если был запрос Book.find... , то я бы не стал писать
и я рад, @pustserg , что вам все про меня понятно)
источник

PM

Peter Mokan in Ruby, Rails, Hanami | dry-rb
ну из вопроса, понятно что нужна сделать выборку из книг/аудиокниг, где территория совпадает с территорией юзера
источник

RA

Rustam Abdul in Ruby, Rails, Hanami | dry-rb
Audiobook.where(territory: user.territory)
источник

RA

Rustam Abdul in Ruby, Rails, Hanami | dry-rb
ну если без джоинов
источник

SP

Sergey Pustovalov in Ruby, Rails, Hanami | dry-rb
Peter Mokan
ну из вопроса, понятно что нужна сделать выборку из книг/аудиокниг, где территория совпадает с территорией юзера
нет

>> плейлисты, в плейлистах книги, а у них лицензии с привязкой к территории

у книги нет территории
источник

RU

Roman Ustuantsev in Ruby, Rails, Hanami | dry-rb
Peter Mokan
ну из вопроса, понятно что нужна сделать выборку из книг/аудиокниг, где территория совпадает с территорией юзера
не совсем, нужно отфильтровать книги в плейлистах исходя из того, что находится на три уровня ниже плейлистов

Playlists -> Books -> Лицензии -> Территории
источник

PM

Peter Mokan in Ruby, Rails, Hanami | dry-rb
my bad, missunderstood
источник

SP

Sergey Pustovalov in Ruby, Rails, Hanami | dry-rb
Roman Ustuantsev
нет

там что-то вроде такого Playlist.joins(audiobook: subscriptions).where(subscription: { territory: user.territory})
этот запрос вернет плейлисты, а нужны как я понял книги
источник

RU

Roman Ustuantsev in Ruby, Rails, Hanami | dry-rb
нет, вернуть нужно плейлисты с отфильтрованными в них книгами, чтобы были только те, у которых лицензия совпадает с территорией
источник

RA

Rustam Abdul in Ruby, Rails, Hanami | dry-rb
Roman Ustuantsev
нет, вернуть нужно плейлисты с отфильтрованными в них книгами, чтобы были только те, у которых лицензия совпадает с территорией
там типа 4 таблицы?
источник

RU

Roman Ustuantsev in Ruby, Rails, Hanami | dry-rb
Rustam Abdul
там типа 4 таблицы?
да
источник

RU

Roman Ustuantsev in Ruby, Rails, Hanami | dry-rb
для интересующихся, вот правильный ответ:

1. создается временная таблица (в данном случае, типа Плейлист)
2. книги отфильтровываются, исходя из лицензий и территорий
3. временная таблица заполняется полученными данными (можно либо кэшировать, либо нет)

спасибо, @pustserg , @apavlyut и многие другие. люблю разговоры про удочку, рыбу и что там еще было. вы супер.

а потом еще удивляются, почему после фразы "русскоязычное комьюнити" появляется какой-то странный привкус

отдельное спасибо @alanikaev . несмотря на то, что совет не помог, было приятно, что кто-то попытался написать что-то относящееся к сути.
источник

АД

Антон Дьячук... in Ruby, Rails, Hanami | dry-rb
Roman Ustuantsev
но это не работает, если был запрос Book.find... , то я бы не стал писать
и я рад, @pustserg , что вам все про меня понятно)
Что значит не работает?
источник

RU

Roman Ustuantsev in Ruby, Rails, Hanami | dry-rb
Антон Дьячук
Что значит не работает?
ну, метод плейлисты фильтровал, а нужно, чтобы книги в них
источник

АД

Антон Дьячук... in Ruby, Rails, Hanami | dry-rb
Roman Ustuantsev
ну, метод плейлисты фильтровал, а нужно, чтобы книги в них
ну тогда это не "не работает", а "не правильно"
источник

RU

Roman Ustuantsev in Ruby, Rails, Hanami | dry-rb
Антон Дьячук
ну тогда это не "не работает", а "не правильно"
да, нужно было точнее в формулировке быть
источник