Ruby on rails,将信息从另一个表

时间:2016-02-11 18:41:19

标签: ruby-on-rails ruby console

我有“车辆”表,看起来像这样

  

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'

2 个答案:

答案 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