【发布时间】:2019-06-20 01:03:36
【问题描述】:
我需要将字符串的长度与输入的座位数进行比较,如果长度更大,则会出现错误。我正在使用 has_and_belongs_to_many 关联。
我有一个航班表和乘客表,它们通过 flight_passengers 表连接在一起,以便将乘客添加到新航班中。
我无法正确调用乘客字符串并将其长度与输入的座位数进行比较。
席位是一个整数值。
class Flight < ApplicationRecord
validate :num_passengers
def num_passengers
if passenger.passenger_id.length > seats
errors.add(:seats, "must be more than passengers")
end
end
end
form.html.erb(如何将乘客添加到新航班)
<label><%= form.label :passengers %></label>
<%= collection_select(:passenger, :passenger_id, Passenger.all, :id, :first_name, {}, { :multiple => true } )%>
schema.rb
create_table "flights", force: :cascade do |t|
t.string "origin"
t.string "destination"
t.string "dep_time"
t.string "arr_time"
t.integer "seats"
t.integer "price"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "airline_id"
t.index ["airline_id"], name: "index_flights_on_airline_id"
end
create_table "flights_passengers", id: false, force: :cascade do |t|
t.integer "flight_id", null: false
t.integer "passenger_id", null: false
t.index ["flight_id", "passenger_id"], name: "index_flights_passengers_on_flight_id_and_passenger_id"
t.index ["passenger_id", "flight_id"], name: "index_flights_passengers_on_passenger_id_and_flight_id"
end
create_table "passengers", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
【问题讨论】:
标签: ruby-on-rails forms validation ruby-on-rails-5 comparison