Как отформатировать дату для нескольких полей в модели в приложении rails? - PullRequest
0 голосов
/ 28 мая 2019

У меня есть форма в рельсах, которая имеет поле даты с маской ввода в формате mm/dd/yyyy, но в настоящий момент, чтобы сохранить ее, я получаю сообщение об ошибке, поскольку формат в модели dd/mm/yyyy. Я нашел решение, которое, возможно, может работать.

 def organization_date=(val)
   date = Date.strptime(val, “%m/%d/%Y”) if val.present?
   write_attribute(:organization_date, date)
 end

но мне нужно одно более элегантное решение, потому что у меня есть больше полей типа date, и я не могу сделать это для каждого поля, и обновление формата для маски ввода до dd/mm/yyyy также не вариант, потому что требование клиента что это будет в формате mm/dd/yyyy

Я использую Rails 6.0 beta

Я благодарен за любые идеи, которые помогут решить эту проблему

Ответы [ 3 ]

1 голос
/ 28 мая 2019

вы можете настроить активную запись по умолчанию на этот формат, но я предлагаю следующее решение. так что вы можете легко форматировать дату вокруг приложения.

патч обезьяны Дата класса, как это:

# config/initializers/date.rb

class Date
  def to_fd
    strftime('%m/%d/%Y')
  end
end

использование:

Date.today.to_fd
=> "05/28/2019"
0 голосов
/ 29 мая 2019

Я думаю, что лучший способ это исправить - создать файл в config / initializers / date_format.rb

module Typecasting
  module Date
    def cast_value v
      ::Date.strptime v, "%m/%d/%Y" rescue super
    end
  end

  ::ActiveRecord::Type::Date.prepend Date
end
0 голосов
/ 28 мая 2019

В вашем config/initializers/ создать date_format.rb:

# Date
Date::DATE_FORMATS[:default] = "%m/%d/%Y" 

Затем перезапустите сервер rails ..

...