Кто-нибудь может придумать, как это еще изменить?
@hourly_pay = {}
HourlyPay.all.each { |hp| @hourly_pay[t("hourly_pay.#{hp.amount}")] = hp.amount }
Спасибо! * * 1004
Изменить: на основании полученных ответов, вот как я реорганизовал
HourlyPay.all.map(&:amount).index_by { |hp| t("hourly_pay.#{hp.amount}") }
Поместив это прямо в мою модель, получится
def self.get_options
all.map(&:amount).index_by { |hp| I18n.t("hourly_pay.#{hp.amount}") }
end
Однако я не уверен, что это требует больших вычислений, поскольку я вызываю map
для значений, возвращаемых из базы данных, а затем вызываю index_by
для этого.
Так как моя модель HourlyPay включает только id
и amount
, я не беспокоюсь о выборе всего. Однако, если бы у меня было намного больше полей, я бы сделал следующее:
def self.get_options
select(:amount).map(&:amount).index_by { |hp| I18n.t("hourly_pay.#{hp.amount}") }
end
Таким образом, выбрано только поле суммы
Спасибо за ответы!