Как рекурсивно сохранить модель с помощью Sequel?

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

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

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

Group.new << Item.new

но нет:

Group.new.add_item(Item.new)

ни:

Item.new.group=Group.new. 

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

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

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


person mb14    schedule 16.02.2012    source источник


Ответы (1)


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

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

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

or

# instance_hooks plugin
Group.new.after_save_hook{add_item(Item.new)}.save
person Jeremy Evans    schedule 16.02.2012