У меня есть приложение rails, в котором есть модель клиента и модель адреса. У клиента может быть много адресов. Я создал форму, которая использует field_for, чтобы пользователи могли вводить данные клиента и адрес в одной форме. Вот модели
customer.rb
class Customer < ApplicationRecord
has_many :addresses, dependent: :destroy
accepts_nested_attributes_for :addresses
end
address.rb
class Address < ApplicationRecord
belongs_to :customer
validates :atype, presence: true
ADDRESSTYPE = %w(Billing Delivery Postal)
validates :atype, inclusion: { in: ADDRESSTYPE }
end
А вот и форма.
<%= form_with(model: customer, local: true) do |f| %>
<%= f.label :firstname %>
<%= f.text_field :firstname %>
<%= f.label :surname %>
<%= f.text_field :surname %>
<%= f.label :location %>
<%= f.text_field :location %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.label :mobile_number %>
<%= f.text_field :mobile_number %>
<%= f.label :company %>
<%= f.text_field :company_name_legacy %>
<%= f.fields_for :addresses do |address| %>
<%= address.label :address_type %>
<%= address.select :atype, Address::ADDRESSTYPE %>
<%= address.label :address_line_1 %>
<%= address.text_field :line_1 %>
<%= address.label :address_line_2 %>
<%= address.text_field :line_2 %>
<%= address.label :city %>
<%= address.text_field :city %>
<%= address.label :state %>
<%= address.text_field :state %>
<%= address.label :postcode %>
<%= address.text_field :postcode %>
<%= address.label :country %>
<%= address.text_field :country %>
<% end %>
<%= f.submit %>
<% end %>
Мой контроллер для сохранение нового клиента происходит следующим образом:
def new
@customer = Customer.new
@customer.addresses.build
end
def create
@customer = Customer.new customer_params
@customer.save
redirect_to @customer
end
Я бы хотел предотвратить сохранение адреса, если строка_1 адреса пуста. Я не могу понять, как проверить, является ли он пустым или как предотвратить его сохранение как часть сохранения клиента? Любой совет будет оценен!