制作api时在更新函数中沿一个方向更改参数

时间:2019-03-08 01:34:36

标签: ruby-on-rails json ruby sqlite

我正在尝试使用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

1 个答案:

答案 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