Как рекурсивно сохранить модель с помощью Sequel? - PullRequest
3 голосов
/ 16 февраля 2012

Я играл с Sequel и Sequel :: Model.

Я создал Group со многими Items (one_to_many).

Я могу сделать:

Group.new << Item.new

но не:

Group.new.add_item(Item.new)

ни:

Item.new.group=Group.new. 

Он жалуется на то, что Group не имеет первичного ключа.

Если я сохраняю group, он сохраняется, но элементы не сохраняются.

Как я могу сделать рекурсивное сохранение всего?

1 Ответ

5 голосов
/ 17 февраля 2012

Сиквел по дизайну не сохраняет целые графы объектов.Его методы изменения ассоциации разработаны так, чтобы быть очень прямыми и не предлагать много абстракций.

Возможно, вы захотите использовать плагин nested_attributes или плагин instance_hooks (который внутренне использует плагин nested_attributes).

# nested attributes plugin
Group.new(:items_attributes=>[{}]).save

или

# instance_hooks plugin
Group.new.after_save_hook{add_item(Item.new)}.save
...