Rails:多对多的额外字段

时间:2018-01-11 20:41:01

标签: ruby-on-rails rails-activerecord

我对我的架构做了一些错误,但我不明白究竟是什么以及如何让它像我想的那样工作:

  • 一个航班有很多座位
  • 座位可用于多个航班
  • 对于航班和座位的每个组合都有预订
  • 一次预订可以有很多航班/座位组合
  • 我应该可以看到flight.seats.first.booking

这是schema.rb的一部分:

create_table "seats", force: :cascade do |t|
  t.integer "airplane_id"
  t.string "row"
  t.integer "column"
end

create_table "flights", force: :cascade do |t|
  t.integer "route_id"
  t.integer "airplane_id"
end

create_table "flights_seats", id: false, force: :cascade do |t|
  t.integer "flight_id"
  t.integer "seat_id"
  t.integer "booking_id"
end

预订课没有什么有趣的

1 个答案:

答案 0 :(得分:1)

我想解决方案可能是让预订更有趣:)

带有三个对象id的

flights_seats是一个红旗。

这个怎么样:

Booking
  belongs_to :flight # flight_id column
  has_many :tickets

Ticket
  belongs_to :booking # booking_id column
  belongs_to :seat # seat_id column

# remove flights_seats

我不知道您的所有需求,但我认为这会让您朝着正确的方向前进。