Вам не нужно писать их самостоятельно, если вы используете модель ActiveRecord. Многопараметрические атрибуты могут быть отправлены через формы по частям. В качестве примера рассмотрим, как работает метод datetime_select, который вам не очень нравится:
http://apidock.com/rails/ActionView/Helpers/DateHelper/datetime_select
Внутренне различные параметры передаются вместе с информацией о заказе и типе, чтобы их можно было правильно кодировать. Вы можете использовать эту функцию, просто назвав свои поля таким же образом. Нетрудно скопировать вспомогательный метод, который вам нравится, и поместить исправленную версию в модуль ApplicationHelper.
Значения здесь отображаются в виде параметров, именуемых чем-то вроде:
model_type[attribute(1i)]
model_type[attribute(2i)]
model_type[attribute(3i)]
Они объединяются в правильном порядке, преобразуются по мере необходимости и передаются в конструктор для этих атрибутов определенного типа, например DateTime.
Это избавляет от необходимости создавать собственные методы-оболочки.
В любом случае, простым способом создания атрибутов является использование метода attr_accessor, например:
class MyModel < ActiveRecord::Base
attr_accessor :some_date
end
Это создаст соответствующие методы доступа и мутатора.
Вы можете использовать триггер before_validation для рекомбинации значений за один проход или написать обертку вокруг метода извлечения даты, чтобы восстановить его при необходимости.