我有“车辆”表,看起来像这样
ID | MAKE | MODEL
1 | acura | CL
2 | acura | EL
3 | acura | INTEGRA
4 |奥迪| A3
... | ...... | ...
我需要从中创建两个表,“制作”表,从“车辆”表中仅获取“make”列信息并将其放入“make_name”列,我自己成功创建了该列(也使其成为不用uniq方法重复。)
id | make_name
1 |讴歌
2 |奥迪
3 |宝马
... | ...
我已经制作的第二个表(“make_models”),但是在获取所需信息时遇到了问题。表看起来像这样
id | make_id | MODEL_NAME
id |使id成为当前模型所属的来自车辆表的车型
我尝试将此行插入rails控制台
@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“make”。* FROM“make”WHERE“make”。“make_name”=? [[“make_name”,“ACURA”]] #
的未定义方法`id'
答案 0 :(得分:2)
问题是你想在这里的一组记录上调用id
:
@makes.where(:make_name => v.make).id
如果要通过make_name查找第一条记录,请改为使用find_by
:
@makes.find_by(:make_name => v.make).id
答案 1 :(得分:1)
试试这个
MakeModel.create :make_id => @current_make = @makes.where(:make_name => v.make).first.id, :model_name => v.model