ruby-on-rails - Money-Rails gem : Humanized_money in Models

标签 ruby-on-rails rails-activerecord money-rails

在我的捐赠模型中,我已将 amount_cents 列货币化

我需要模型中捐赠金额的人性化版本(例如 643.50),以便我可以生成 PDF 收据并将其发送给捐赠者。

我试过 humanized_money(self.amount) 和 self.amount.humanized_money 但得到错误:

NoMethodError: undefined method `humanized_money' for #<Donation:0x007fa687ebb678>

如何在模型中获得这种人性化的形式?
class Donation < ActiveRecord::Base
  belongs_to :donatable, polymorphic: true
  belongs_to :added_by_user, foreign_key: "added_by", class_name: "User"

  store_accessor :details, :method

  monetize :amount_cents

  def donations_this_week(branch_id)
    sum =  Donation.sum(:amount_cents).to_money
    return humanized_money(sum)
  end

  def receipt
    Receipts::Receipt.new(
        id: id,
        product: "GoRails",
        message: "This receipt is to acknowledge that we have received a donation with the below details from #{self.donatable.name}",
        company: {
            name: self.donatable.branch.organization.name,
            address: "#{self.donatable.branch.address_line_1}\n#{self.donatable.branch.address_line_2}\n#{self.donatable.branch.email}\n#{self.donatable.branch.legal_details}",
            email: self.donatable.branch.email,
            logo: self.donatable.branch.organization.logo.url(:medium),
        },
        line_items: [
            ["Date",           created_at.to_s],
            ["Donor Name", self.donatable.name],
            ["Amount",         humanized_money(self.amount)],
            ["Payment Method",     self.method],
        ]
    )
  end
end

以下是数据库架构:
create_table "donations", force: :cascade do |t|
t.string   "donatable_type"
t.integer  "donatable_id"
t.integer  "amount_cents"
t.datetime "created_at",                  null: false
t.datetime "updated_at",                  null: false
t.datetime "date"
t.integer  "added_by"
t.jsonb    "details",        default: {}, null: false

最佳答案

在不加载所有内容的情况下执行此操作 ActionView::Base .你可以做

return ActionController::Base.helpers.humanized_money sum

关于ruby-on-rails - Money-Rails gem : Humanized_money in Models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32086603/

相关文章:

ruby-on-rails - Rails 3 - 在任何来源中都找不到 rake-0.9.2 (Bundler::GemNotFound)

ruby-on-rails - 如何获取 ActiveRecord 关联的列名称和值?

ruby-on-rails - 货币 rails gem 的验证

ruby-on-rails - 由于库版本不兼容,无法创建 Rails 应用程序 - 加载错误

ruby-on-rails - gem bootstrap-sass 和 gem twitter-bootstrap-rails 有什么区别

ruby-on-rails - Rails 6 ActiveStorage 在文件上传失败时恢复事务

ruby-on-rails - Postgresql:比较数组导致 "malformed array literal"错误

ruby-on-rails - 如何防止 Ruby money 出现浮点错误

ruby-on-rails - 将 Money-Rails Gem 用于多种货币 [Rails 4]

ruby-on-rails - Resque 工作人员无法识别 Rails Mongoid 模型