15

次の例に示すように設計された API バックエンドをテストしたいと思います。

http://localhost:3000/api/v1/shops/1.json

JSON 応答:

{
  id: 1,
  name: "Supermarket",
  products: [
    "fruit",
    "eggs"
  ]
}

対応するモデルは次のとおりです。

# app/models/shop.rb
class Shop < ActiveRecord::Base
  extend Enumerize
  attr_accessible :name, :products

  serialize :products, Array
  enumerize :products, in: %w{fruit meat eggs}, multiple: true

  resourcify

  validates :name, presence: true, length: { in: 5..50 }    
  validates :products, presence: true
end

curlを使用してエントリの作成と更新をテストしたいと考えています。したがって、次のコマンドを使用します。

作成:

$ curl -X POST http://localhost:3000/api/v1/shops.json -d \
  "shop[name]=Supermarket&shop[products]=fruit,eggs&auth_token=a1b2c3d4"

アップデート:

$ curl -X PUT http://localhost:3000/api/v1/shops/1.json -d \
  "shop[name]=Supermarket&&shop[products]=fruit,eggs&auth_token=a1b2c3d4"

products配列として送信する必要がある値。上記のコマンドを実行すると、次のメッセージが返されます。

{"errors":{"products":["is invalid"]}

curlproductsで機能するように配列の値を書き込むにはどうすればよいですか?

4

1 に答える 1

17
$ curl -X POST http://localhost:3000/api/v1/shops.json -d \
  "shop[name]=Supermarket \
  &shop[products][]=fruit \
  &shop[products][]=eggs \
  &auth_token=a1b2c3d4"
于 2013-06-14T12:45:39.237 に答える