Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails,从另一个表向表中插入信息_Ruby On Rails_Ruby_Console - Fatal编程技术网

Ruby on rails RubyonRails,从另一个表向表中插入信息

Ruby on rails RubyonRails,从另一个表向表中插入信息,ruby-on-rails,ruby,console,Ruby On Rails,Ruby,Console,我有一张“车辆”表,看起来像这样 ID|MAKE|MODEL 1 | acura | cl 2 | acura | el 3 | acura | integra 4 |奥迪| a3 …|…| 我需要从“makes”表中创建两个表,只从“vehicles”表中获取“make”列信息,并将其放入“make_name”列中,这是我自己成功创建的(也通过uniq方法使其不会重复) id|make_name 1 |阿库拉 2 |奥迪 3 |宝马 …| 还有第二张表(“make_models”),我已经制作

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

ID|MAKE|MODEL

1 | acura | cl

2 | acura | el

3 | acura | integra

4 |奥迪| a3

…|…|

我需要从“makes”表中创建两个表,只从“vehicles”表中获取“make”列信息,并将其放入“make_name”列中,这是我自己成功创建的(也通过uniq方法使其不会重复)

id|make_name

1 |阿库拉

2 |奥迪

3 |宝马

…|

还有第二张表(“make_models”),我已经制作了,但是在获取所需信息时遇到了问题。这张桌子看起来像这样

id|make|u id|model|u 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)选择“makes”。*从“makes”中选择“makes”。“Make_name”=?[[“命名”、“极品”]] 未定义的方法“id”#


问题在于,您正试图在此处调用一组记录的
id

@makes.where(:make_name => v.make).id
如果要通过make_name查找第一条记录,请改用
find_by

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

问题在于,您正试图在此处调用一组记录的
id

@makes.where(:make_name => v.make).id
如果要通过make_name查找第一条记录,请改用
find_by

@makes.find_by(:make_name => v.make).id
试试这个

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

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

您还可以执行@makes.where(…).first.id。谢谢您的回复!:)您还可以执行@makes.where(…).first.id。谢谢您的回复!:)