В Reform, как составить свойство с двумя значениями из формы

У меня есть объект формы, созданный с помощью Reform, и я хотел бы заполнить свойство двумя значениями, которые берутся из формы и не включены в модель.

Моя форма:

  div.form-item.form-item--near
    = f.input :employment_contract_type, collection: @presenter.employment_contract_codes_collection
    = f.input :employment_contract_time, collection: ["Partial", "Complete"], as: :radio_buttons

Моя форма объекта:

  class FinancingRequestForm < Reform::Form
    property :employment_contract_code
    property :employment_contract_time, virtual: true
    property :employment_contract_type, virtual: true
  end

Модель:

# Table name: purchase_financing_customers
#
#  id                       :integer          not null, primary key
#  employment_contract_code :string

module Purchase
  class FinancingCustomer < ApplicationRecord
  end
end

Я хотел бы что-то вроде этого:

  class FinancingRequestForm < Reform::Form
    ContractCodePopulator = lambda do |_|
      time = employment_contract_type == "Complete" ? "C" : "P"
      self.employment_contract_code  = "#{send("employment_contract_type")}#{time}"
    end

    property :employment_contract_code, populator: ContractCodePopulator
    property :employment_contract_time, virtual: true
    property :employment_contract_type, virtual: true
  end

Но проблема в том, что де Populator не срабатывает, когда я запускаю form.validate(request_params).

Я просто хочу, чтобы код занятости_contract_code составлял два других виртуальных значения.

Спасибо!

0 ответов

Другие вопросы по тегам