Как применить to_f к столбцу для всех результатов в запросе активной записи в консоли rails - PullRequest
1 голос
/ 29 мая 2019

У меня есть этот запрос: p = Payment.where(:client_id => 1)

Тогда только некоторые поля, поэтому я выполняю это: p.select(:id, :created_at, :amount)

Проблема в том, что каждая сумма в результате приходит как BigDecimal, иэто не читаетсяМне нужно применить to_f функцию внутри консоли rails, чтобы получить читабельный набор результатов.

Я попытался map, например: p.map {|p| p.amount.to_f} Но он возвращает мне массив только с суммами, иМне нужно, чтобы он был вместе с другими атрибутами.

Ответы [ 3 ]

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

Вы можете попробовать вот так,

p.map { |item| { id: item.id, created_at: item.created_at, amount: item.amount.to_f}}
1 голос
/ 29 мая 2019

Чтобы решить вашу проблему и получить все поля:

p.map { |i| [i.id, i.created_at, i.amount.to_f] }

Также вы можете ознакомиться с этой статьей . Возможно, вам просто нужен тип с плавающей запятой для поля amount в вашей базе данных

0 голосов
/ 29 мая 2019

, если вы всегда хотите float суммы, вы можете установить обратный вызов after_find

class Payment < ActiveRecord::Base
  after_find do |payment|
    self.amount = self.amount.to_f
  end
end

это всегда даст вам значение с плавающей точкой, когда вы найдете объект

  • Это не будет обновлять значение в вашей БД.

Пожалуйста, посмотрите на этот Обратный звонок Rails

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...