首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用“航班”播撒数据库

用“航班”播撒数据库
EN

Stack Overflow用户
提问于 2017-12-02 22:32:28
回答 1查看 54关注 0票数 0

我正在尝试为我的数据库添加种子,我一直得到错误“ActiveRecord::RecordIn有效值:验证失败:到达的航班必须存在”。在我在seeds.rb文件中创建关联的方法中,我提供了arrival_airport_id,所以我不知道问题出在哪里。

seeds.rb

代码语言:javascript
复制
Airport.delete_all
Flight.delete_all

#Airport seeds
airports = [
["Boston Logan International Airport", "BOS"],
["Gulfport", "GPT"],
["Jackson", "JAN"],
["Charleston", "CRW"]
]

airports.each do |full_name, name|
  Airport.create!( full_name: full_name, name: name )
end

  a = Airport.all[0..1]
  b = Airport.all[2..3]

  a.each_with_index do |a, index|
    a.departing_flights.create!(
      arrival_airport_id: b[index]
      )
  end

机场模式:

代码语言:javascript
复制
class Airport < ApplicationRecord
    has_many :departing_flights, class_name: "Flight", foreign_key: "departing_airport_id"
    has_many :arriving_flights, class_name: "Flight", foreign_key: "arrival_airport_id"
end

飞行模型:

代码语言:javascript
复制
class Flight < ApplicationRecord
    belongs_to :departing_flight, class_name: "Airport", foreign_key: "departing_airport_id"
    belongs_to :arriving_flight, class_name: "Airport", foreign_key: "arrival_airport_id" 
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-02 23:12:39

这是一个常见的错误,有两个解决办法。

代码语言:javascript
复制
a.each_with_index do |a, index|
  a.departing_flights.create!(
    arrival_airport_id: b[index]  # This line is the problem
    )
end

将对象分配给id列。可以将id分配给id列,也可以将对象分配给object列。

代码语言:javascript
复制
arrival_airport_id: b[index].id
# or
arrival_airport: b[index]

Rails会尽力帮助您,但是您必须给它正确的对象类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47613308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档