Forum: Ruby on Rails fixtures advanced question

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
7864d809993744583d15b0f0a2f8dded?d=identicon&s=25 Marius Žilėnas (kronidas)
on 2006-04-12 22:15
Hello,
in my database i have tables models,marques,cars. I wrote fixtures for
models f1:
  id: 1
  marque_id: 1
  name: 100 NX
f2:
  id: 2
  marque_id: 1
  name: 200 SX
f3:
  id: 3
  marque_id: 1
  name: Almera
f4:
  id: 4
  marque_id: 1
  name: Patrol
f5:
  id: 5
  marque_id: 1
  name: Primera
f6:
  id: 6
  marque_id: 2
  name: CLK
f7:
  id: 7
  marque_id: 2
  name: CLS
f8:
  id: 8
  marque_id: 2
  name: R
f9:
  id: 9
  marque_id: 3
  name: 400
f10:
  id: 10
  marque_id:
  name: 500
f11:
  id: 11
  marque_id: 4
  name: 159
f12:
  id: 12
  marque_id: 4
  name: 164
f13:
  id: 13
  marque_id: 4
  name: 163
f14:
  id: 14
  marque_id: 5
  name: V70
f15:
  id: 15
  marque_id: 6
  name: Jeep Cherokee
f16:
  id: 16
  marque_id: 7
  name: 100
f17:
  id: 17
  marque_id: 7
  name: A8
f18:
  id: 18
  marque_id: 8
  name: 323
f19:
  id: 19
  marque_id: 8
  name: 929
f20:
  id: 20
  marque_id: 9
  name: Avensis
f21:
  id: 21
  marque_id: 9
  name: Highlander
f22:
  id: 22
  marque_id: 9
  name: Vista

and for marques
f1:
  id: 1
  name: Nissan
f2:
  id: 2
  name: Mercedes-Benz
f3:
  id: 3
  name: Aixam
f4:
  id: 4
  name: Alfa Romeo
f5:
  id: 5
  name: Volvo
f6:
  id: 6
  name: Chrysler
f7:
  id: 7
  name: Audi
f8:
  id: 8
  name: Mazda
f9:
  id: 9
  name: Toyota


So now i would like to generate fixture for table cars.
what I do is
<% marques = Marque.find_all %>
<% models = Array.new %>
<% Model.find_all.each do |model| %>
   models[model.marque_id]<<model
<% end %>
<% 0.upto(10) do |i| %>
<% marque_i = rand marques.length %>
car<%= i %>:
marque_id: <%= marques[marque_i].id %>
model_id: <%= models[marques[marque_i].id].id %>
<% end %>

But it looks like Marque.find_all doesn't return anything because doing
"marques[marque_i].id" makes error. It says, that I can not access id of
object nil.

My fixture loading order is defined so that first models and marques
fixtures are loaded, then fixture "cars.yml".

Please, help me to make <% marques = Marque.find_all %> work . Or it is
not possible to make database calls from fixtures ?

Thank you
This topic is locked and can not be replied to.