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

Я создаю форму бронирования для публики моего фестиваля. Но у меня есть много двойной записи в моем массиве. Причиной обновления.

Как я могу на Ruby on Rails очистить форму после отправки? Или предотвратить эту проблему другим способом?

MAJ: я публикую здесь свой вид, мой контроллер и мою модель

<%= simple_form_for @booking do |f| %>
    <%= f.error_notification %>

    <%= f.input :first_name, label: 'Prénom' %>
    <%= f.input :last_name, label: 'Nom'  %>
    <%= f.input :email, label: 'Email'  %>
    <%= f.input :phone, as: :integer, label: 'Téléphone'  %>

    <%= f.input :member, as: :integer, label: false, input_html: {id: 'quantite_1', value: 0, min: "0", onchange: 'prix()'} %>
    <%= f.input :member_not, as: :integer, label: false, input_html: {id: 'quantite_2', value: 0, min: "0", onchange: 'prix()'} %>

    <%= f.button :submit, 'Réserver', class: 'uk-button red-full button' %>
<%end%>
class BookingsController < ApplicationController
  before_action :set_booking, only: [:show]

  def index
    @booking = Booking.new
  end

  def edit
  end

  def show
  end

  def create
    @booking = Booking.new(booking_params)

    if @booking.save
      BookingMailer.confirmation_booking(@booking).deliver_now
      BookingMailer.alert_booking(@booking).deliver_now
      redirect_to festivals_path
    else
      render :index, notice: ''
    end
  end

  private

  def set_booking
    @booking = Booking.find(params[:id])
  end

  def booking_params
    params.require(:booking).permit(:email, :first_name, :last_name, :phone, :member, :member_not, :young, :so_young, :exonere, :representation_id)
  end
end
class Booking < ApplicationRecord
  belongs_to :representation

  validate :test

  validates :last_name, presence: true
  validates :first_name, presence: true
  validates :email, presence: true

  private

  def test
    if member_not + member <= 0
      errors.add(:member, "Il vous faut au moins 1 place")
    end
  end
end

Иногда я получаю два одинаковых бронирования

1 Ответ

0 голосов
/ 13 июля 2019

Хорошо, поскольку в вашем контроллере или представлении нет кода, который мог бы вызвать двойные записи, самый простой способ - это проверить модель бронирования. Так что в модели бронирования я бы добавил:

validates :email, uniqueness: true

Недостатком является то, что пользователь может забронировать билеты только с этим адресом электронной почты один раз. Но если вы можете жить с этим, все будет хорошо.

...