Присоединение к отношениям с Ruby Object Mapper
У меня есть небольшое приложение "просто для удовольствия", которое я перевожу с Active Record и SQLite на Ruby Object Mapper. В основном это шанс для меня изучить, как шаблон отображения данных влияет на мой код.
У меня есть модель курса, модель игры и модель оценки. При расчете записей курса мне нужно получить объект курса вместе со всеми связанными с ним играми и все оценки для каждой из этих игр.
Я нашел пример создания объединенного отношения, но потом я не смог найти никаких примеров того, как написать сопоставитель для этого отношения, поэтому я не могу на самом деле получить эти данные обратно.
Моя схема ПЗУ выглядит так:
base_relation :courses do
repository :main
attribute :id, Integer
attribute :name, String
attribute :created_at, Time
attribute :updated_at, Time
key :id
end
base_relation :games do
repository :main
attribute :id, Integer
attribute :course_id, Integer
attribute :played_at, Time
attribute :created_at, Time
attribute :updated_at, Time
key :id
key :course_id
end
И я хочу сделать запрос, где я могу получить данный курс со всеми связанными с ним играми. Что-то вроде:
env[:courses].restrict(id: 1).join(env[:games]).one
Но мне не удалось найти правильный синтаксис для определения объединения, я просто знаю, что аксиома поддерживает объединения в памяти.
Кто-нибудь знает хороший пример чтения и записи с объединенными данными из Ruby Object Mapper?
1 ответ
В настоящее время ПЗУ не поддерживает отображение объединенных отношений OOTB. В аксиоме появилась новая функция под названием nest/unnest, которую ROM будет использовать для сопоставления соединенных отношений.
Прямо сейчас это потребует большого количества хакерских атак, поэтому мы решили отложить эту функцию и дождаться появления / удаления гнезда аксиомы.