如何使用续集递归保存模型?

mb1*_*b14 3 ruby sequel

我一直在玩Sequel和Sequel :: Model.

Group用很多Items(one_to_many)创建了一个.

我可以:

Group.new << Item.new
Run Code Online (Sandbox Code Playgroud)

但不是:

Group.new.add_item(Item.new)
Run Code Online (Sandbox Code Playgroud)

也不:

Item.new.group=Group.new. 
Run Code Online (Sandbox Code Playgroud)

它抱怨Group没有主键.

如果我保存group,它会被保存但项目不会被保存.

如何对所有内容进行递归保存?

Jer*_*ans 5

设计续集不保存整个对象图.它的关联修改方法设计得非常直接,并没有提供很多抽象.

您可能希望使用nested_attributes插件或instance_hooks插件(nested_attributes插件在内部使用).

# nested attributes plugin
Group.new(:items_attributes=>[{}]).save
Run Code Online (Sandbox Code Playgroud)

要么

# instance_hooks plugin
Group.new.after_save_hook{add_item(Item.new)}.save
Run Code Online (Sandbox Code Playgroud)