0

次のコードを含むシードファイルがあります。

300.times do
  # create the customer
  customer = Customer.create([
    {customer_type_id: '1'}
  ])

  # create an address for the customer
  address = Address.create([
    {city: Faker::Address.city, country: 'UK'}
  ])
  postcode = Postcode.create([
    {value: Faker::Address.uk_postcode}
  ])
  name_number = NameNumber.create([
    {value: Random.rand(495)}
  ])
  street = Street.create([
    {value: Faker::Address.street_name + " " + Faker::Address.street_suffix}
  ])
  state = State.create([
    {value: Faker::Address.uk_county}
  ])

これは正常に機能します。しかし、私は次のことができることを望んでいました。

address = Address.create([
  {city: Faker::Address.city, country: 'UK'}
])
address.postcode = Postcode.create([
  {value: Faker::Address.uk_postcode}
])

1行目に住所を作成し、2行目に住所の郵便番号を作成しています。ただし、これによりエラーが発生します。

誰かが私がこれを行う方法を提案できますか?

ありがとう!

編集:要求に応じて、生成されるエラーは次のとおりです。

rake db:seed
rake aborted!
undefined method `postcode=' for #<Array:0x007f9df1f26818>

Tasks: TOP => db:seed
(See full trace by running task with --trace)
4

1 に答える 1

1

に配列を渡します。createこれにより、配列内の属性のハッシュごとに1つのオブジェクトが作成され、結果のオブジェクトの配列が返されます。一度に作成するオブジェクトは1つだけなので、属性のハッシュ(および必要に応じて中括弧)を囲む角かっこを削除するだけで、正しく機能するはずです。

address = Address.create(city: Faker::Address.city, country: 'UK')
于 2012-07-21T20:26:05.613 に答える