2016-02-11 74 views
0

我有「車」表看起來像這樣Ruby on Rails的,從另一個表信息插入表

ID | MAKE | MODEL

1 | acura | cl

2 | acura | el

3 | acura | integra

4 | audi | a3

... | ... | ...

,我需要從它使兩個表,「做」表中,僅以「使「來自」車輛「表的列信息並將其放入我自己成功創建的」make_name「列中(也使其不能通過uniq方法自行重複)。

id | make_name

1 | acura

2 | audi

3 | bmw

... | ...

第二個表(「make_models」),我已經做了,但有問題獲得需要的信息。表看起來像這樣

id | make_id | model_name

id | makes id to which current model belongs | model from vehicles table

我試圖插入該行軌控制檯

@vehicles = Vehicle.all 
@makes = Make.all 
@vehicles.each do |v| 
    MakeModel.create :make_id => @current_make = @makes.where(:make_name => v.make).id, :model_name => v.model 
end 

但得到這個錯誤消息

NoMethodError: Make Load (1.0ms) SELECT "makes".* FROM "makes" WHERE "makes"."make_name" = ? [["make_name", "ACURA"]] undefined method `id' for #

回答

1

試試這個

MakeModel.create :make_id => @current_make = @makes.where(:make_name => v.make).first.id, :model_name => v.model 
+0

非常感謝! –

2

的問題是,你綁調用id上這裏收集的記錄:

@makes.where(:make_name => v.make).id 

如果你想找到make_name的第一條記錄,使用find_by代替:

@makes.find_by(:make_name => v.make).id 
+0

你也可以做@ makes.where(...)first.id –

+0

。感謝您的答覆! :) –