GLORP + ActiveRecord и один ко многим

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

GLORP + ActiveRecord и один ко многим

Dennis Schetinin
Добрый день!

Модель такая: Ответ (Reply) может содержать несколько оснований (Basis). Соовтетственно, в Reply есть ivar по имени bases, которая содержит OrderedCollection. Как это отразить в реляционную базу данных с помощью GLORP (если это важно, я использую его с ActiveRecord)?

На данный момент у меня есть класс MyDescriptorSystem с двумя методами:

MyDescriptorSystem >> tableForBasis: aTable

    (aTable createFieldNamed: 'id' type: platform serial) bePrimaryKey.
    aTable createFieldNamed: 'page' type: (platform varchar: 200).
    aTable createFieldNamed: 'pool' type: (platform varchar: 200).
    aTable createFieldNamed: 'register' type: (platform varchar: 200)

MyDescriptorSystem >> tableForReply: aTable

    (aTable createFieldNamed: 'id' type: platform serial) bePrimaryKey.
    #('content' 'date' 'number' 'result' 'request' 'bases')
        do: [:each | aTable createFieldNamed: each type: (platform varchar: 200)]

Странность второго метода объясняется необходимостью задать соответствия для всех ivar-ов в классе, иначе GLORP выкидывает исключение в процессе построения таблиц (возможно это какая-то фишка ActiveRecord?). Явно этого можно избежать, но я не знаю как. И в этом заключается первый вопрос: как "проигнорировать" некоторые поля?

В РБД связь между Ответом и Основаниями можно реализовать двумя вариантами:

1. Связь (по ID ответа) из таблицы BASIS в таблицу REPLY. Если я не хочу заводить ссылку на REPLY в объектах BASIS модели, то как описать таблицу BASIS так, чтобы там было "лишнее" поле reply_id? И как вообще такую связь описать, чтобы GLORP все правильно загружал?

2. Заводим дополнительную таблицу BASES, в которой есть два поля: ссылки (id) на REPLY и BASIS. По сути, реализуем схему многие ко многим. Тоже не знаю, как описать это в GLORP-е.

Есть ли другие варианты?

Принимаются как прямые ответы на эти вопросы, так и ссылки на документацию. Мне готового рецепта найти не удалось.

--
Dennis Schetinin

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: GLORP + ActiveRecord и один ко многим

vmusulainen-2
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: GLORP + ActiveRecord и один ко многим

Dennis Schetinin

Все сразу заработало :)  Огромное спасибо!


--
Dennis Schetinin

--
http://groups.google.ru/group/sugr