【问题标题】:Comparing the length of a string to a number. Ruby on Rails 5将字符串的长度与数字进行比较。 Ruby on Rails 5
【发布时间】: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


    【解决方案1】:

    这都是关于数据类型的。不可能知道一个数字的长度,必须把值转成字符串,用to_s

    def num_passengers
      if passenger.passenger_id.to_s.length > seats
       errors.add(:seats, "must be more than passengers")
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多