我正在尝试使用Ruby on Rails 5创建API,因为它是新手,所以我使用了脚手架来生成表,因此这是我旅行的主表
class CreateTrips < ActiveRecord::Migration[5.2]
def change
create_table :trips do |t|
t.string :nameOfDriver
t.string :status
t.timestamps
end
end
end
这是我在控制器中的更新功能
def update
if @trip.update(trip_params)
render json: @trip
else
render json: @trip.errors, status: :unprocessable_entity
end
end
我正在尝试先将约束添加到“完成”或“进行中”状态...第二步检查是否“完成”,我无法将其更改为“进行中”
完整项目的此链接 https://github.com/gnik2036/RubyTask
答案 0 :(得分:0)
class Trip < ApplicationRecord
TRIP_STATUSES = %w[completed ongoin].freeze
INVALID_STATUS_CHANGES = [%w[completed ongoin]].freeze
validate :status_validity, on: :update
validates :status, presence: true, inclusion: { in: TRIP_STATUSES }
private
def status_validity
return unless status_changed?
if INVALID_STATUS_CHANGES.include? status_change
errors.add(:status, "Cannot be changed from #{status_was} to #{status}.")
end
end
end