【问题标题】:Ruby on rails, inserting information into table from another tableRuby on rails,将信息从另一个表插入到表中
【发布时间】:2016-02-11 18:41:18
【问题描述】:

我有一个看起来像这样的“车辆”表

ID |制作 |型号

1 |讴歌 | cl

2 |讴歌 |埃尔

3 |讴歌 |积分

4 |奥迪 | a3

... | ... | ...

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

标识 | make_name

1 |讴歌

2 |奥迪

3 |宝马

... | ...

还有我已经制作的第二个表(“make_models”),但在获取所需信息时遇到问题。表格是这样的

标识 | make_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 "makes".* FROM "makes" WHERE "makes"."make_name" = ? [[“make_name”,“讴歌”]] #

的未定义方法“id”

【问题讨论】:

    标签: ruby-on-rails ruby console


    【解决方案1】:

    问题是您要在此处的记录集合上调用id

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

    如果您想通过 make_name 查找第一条记录,请改用 find_by

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

    【讨论】:

    • 你也可以做@makes.where(...).first.id
    • 感谢您的回复! :)
    【解决方案2】:

    试试这个

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 2021-12-25
      • 1970-01-01
      相关资源
      最近更新 更多