изменить параметр в одном направлении в функции обновления при создании API - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь создать API с использованием Ruby on Rails 5, я новичок в этом, поэтому я использовал scaffold для генерации таблиц, так что это моя основная таблица для поездки

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 голосов
/ 08 марта 2019
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...