创建集合的操作

时间:2015-06-08 08:34:04

标签: ruby-on-rails trailblazer

我想创建一个接受json数组并创建多个对象的操作。像Books::CreateCollection这样的东西。 我相信我需要以某种方式重用Books::Create - 只需多次调用它并将整个循环包装在事务中。

JSON:

{
 "books": [
    {
       title: "A Tale Of Two Cities"
    },
    {
       title: "Don Quixote"
    }
 ]
}

但是Books::CreateCollection的合同应该如何?

开拓者0.3.0

1 个答案:

答案 0 :(得分:2)

你的合同可以解决这个问题。

contract do
  model Book # since you don't call this on the operation.

  collection :songs, populate_if_empty: Book do
    property :title
  end
end

这是改革的基本巫术。

现在,合约将在Book数组中为每个传入的哈希片段创建一个songs实例。