问题标签 [money-rails]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1964 浏览

ruby-on-rails - money-rails, Money#== 仅支持零数字

money-rails在我的 Rails 应用程序中使用 gem。到目前为止,它一直运行良好,但我最近开始收到以下错误:

我不确定是什么原因造成的或如何解决它。我最近跑步bundle update,所以我猜有些东西已经更新了。我的gemfile样子是这样的:

我的实现如下所示:

正如我之前提到的那样,这已经奏效了,所以我不确定是什么破坏了它。

有任何想法吗?

更新

为了测试我尝试了以下内容。

然后我得到了和以前一样的错误。但如果我尝试:

它似乎工作。我觉得这有点奇怪。

更新

这是我尝试保存记录时的回溯:

["/Users/[user]/.rvm/gems/ruby-2.5.1/gems/money-6.11.3/lib/money/money/arithmetic.rb:70:in =='", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activemodel-5.1.6/lib/active_model/validations/numericality.rb:22:in!='", "/Users/ [user]/.rvm/gems/ruby-2.5.1/gems/activemodel-5.1.6/lib/active_model/validations/numericality.rb:22:in validate_each'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activemodel-5.1.6/lib/active_model/validator.rb:150:inblock in validate'", "/Users/[user]/ .rvm/gems/ruby-2.5.1/gems/activemodel-5.1.6/lib/active_model/validator.rb:147:in each'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activemodel-5.1.6/lib/active_model/validator.rb:147:invalidate'", "/Users/[user]/.rvm/gems/ruby-2.5 .1/gems/activesupport-5.1.6/lib/active_support/callbacks.rb:413:in block in make_lambda'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/callbacks.rb:197:inblock (2 levels) inhalting'", "/Users/[user]/.rvm/gems/ruby-2.5.1 /gems/activesupport-5.1.6/lib/active_support/callbacks.rb:601:in block (2 levels) in default_terminator'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/callbacks.rb:600:incatch'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6 /lib/active_support/callbacks.rb:600:inblock in default_terminator'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/callbacks.rb:198:in阻止停止'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/callbacks.rb:507:in block in invoke_before'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/callbacks.rb:507:ineach'", "/ Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/callbacks.rb:507:in invoke_before'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/callbacks.rb:130:inrun_callbacks'", "/Users/[user]/.rvm /gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/callbacks.rb:827:in _run_validate_callbacks'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activemodel-5.1.6/lib/active_model/validations.rb:405:inrun_validations!'", "/Users/[user]/.rvm/gems/ruby-2.5. 1/gems/activemodel-5.1.6/lib/active_model/validations/callbacks.rb:114:in block in run_validations!'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/callbacks.rb:97:inrun_callbacks'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport- 5.1.6/lib/active_support/callbacks.rb:827:in _run_validation_callbacks'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activemodel-5.1.6/lib/active_model/validations/callbacks.rb:114:inrun_validations!'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activemodel-5.1.6/lib/active_model /validations.rb:335:invalid?'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/validations.rb:65:in有效吗?'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/validations.rb:82:in perform_validations'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/validations.rb:50:insave!'", "/ Users/[user]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/attribute_methods/dirty.rb:43:in save!'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/transactions.rb:313:inblock in save!'", "/Users/[用户]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/transactions.rb:384:in block in with_transaction_returning_status'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/database_statements.rb:235:inblock in transaction'", "/Users/[user]/.rvm/ gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/transaction.rb:194:in block in within_new_transaction'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/monitor.rb:226:inmon_synchronize'", "/Users/[user]/.rvm/gems/ruby- 2.5.1/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/transaction.rb:191:in within_new_transaction'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/database_statements.rb:235:intransaction'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/transactions.rb:210:intransaction'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/transactions.rb:381:inwith_transaction_returning_status'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/transactions.rb:313:in save!'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activerecord-5.1.6/lib/active_record/suppressor.rb:46:insave!'", "/Users /[user]/Documents/Development/wondery/[appname]/lib/importers/bts_wholesaler_importer.rb:245:in block in set_supported_currencys_for_product_variant'", "/Users/[user]/Documents/Development/wondery/[appname]/lib/importers/bts_wholesaler_importer.rb:240:ineach'", "/Users/[user]/Documents/Development/wondery/[appname]/lib/ importers/bts_wholesaler_importer.rb:240:in set_supported_currencys_for_product_variant'", "/Users/[user]/Documents/Development/wondery/[appname]/lib/importers/bts_wholesaler_importer.rb:224:inset_up_product_variant'", "/Users/[user]/Documents/Development/wondery/[appname]/lib/importers/bts_wholesaler_importer.rb:208:in match_product_variant_to_product'", "/Users/[user]/Documents/Development/wondery/[appname]/lib/importers/bts_wholesaler_importer.rb:84:inblock in get_products_from_api_data'", "/用户/[user]/Documents/Development/wondery/[appname]/lib/importers/bts_wholesaler_importer.rb:75:in map'", "/Users/[user]/Documents/Development/wondery/[appname]/lib/importers/bts_wholesaler_importer.rb:75:inget_products_from_api_data'", "/Users/[user]/Documents/Development/wondery/[appname]/lib/importers/bts_wholesaler_importer.rb:25:inimport'", "(irb):2:inirb_binding'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb/workspace.rb:85:ineval'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb/workspace.rb:85:in评估'", "/Users/[user ]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb/context.rb:380:in evaluate'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb.rb:491:inblock (2 levels) in eval_input'", "/Users/[user]/.rvm /rubies/ruby-2.5.1/lib/ruby/2.5.0/irb.rb:623:in signal_status'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb.rb:488:inblock in eval_input'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib /ruby/2.5.0/irb/ruby-lex.rb:246:in block (2 levels) in each_top_level_statement'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb/ruby-lex.rb:232:inloop'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb /ruby-lex.rb:232:in block in each_top_level_statement'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb/ruby-lex.rb:231:incatch'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb/ruby-lex.rb:231 :in each_top_level_statement'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb.rb:487:ineval_input'","/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb.rb :428:in block in run'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb.rb:427:incatch'","/Users/[user ]/。rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb.rb:427:inrun'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/irb.rb:383:in开始'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/railties-5.1.6/lib/rails/commands/console/console_command.rb:62:in start'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/railties-5.1.6/lib/rails/commands/console/console_command.rb:17:instart'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/railties-5.1.6/lib/rails/commands/console/console_command.rb:97:in perform'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/thor-0.20.0/lib/thor/command.rb:27:inrun'", "/Users/ [用户]/.rvm/gems/ruby-2.5.1/gems/thor-0.20.0/lib/thor/invocation.rb:126:in invoke_command'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/thor-0.20.0/lib/thor.rb:387:indispatch'", "/Users/[user]/.rvm/gems /ruby-2.5.1/gems/railties-5.1.6/lib/rails/command/base.rb:63:in perform'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/railties-5.1.6/lib/rails/command.rb:44:ininvoke'", "/Users/[user]/.rvm/gems/ruby-2.5.1 /gems/railties-5.1.6/lib/rails/commands.rb:16:in<top (required)>'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:in要求'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6 /lib/active_support/dependencies.rb:292:in block in require'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:inload_dependency'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:292:inrequire'", "/Users/[user]/Documents/Development/wondery/[appname]/bin/rails:9:in'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:286:in load'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:286:inblock in load'", "/Users /[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:in load_dependency'", "/Users/[user]/.rvm/gems/ruby-2.5.1/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:286:inload'", "/Users/[user]/.rvm/ rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in require'", "/Users/[user]/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:inrequire'", "-e:1:in `'"]

0 投票
1 回答
173 浏览

ruby-on-rails - Ruby 中的钱轨问题

我正在按照教程在一个新项目中使用money-rails。

这是我的迁移文件:

我的模型:

我阅读了money-rails的所有API规范,但我猜不太理解。

如果我运行 rails 控制台并执行 Plan.last.price 它会显示此错误:

我在这里做错了什么?如何为此价格属性设置值?

谢谢

0 投票
1 回答
550 浏览

ruby-on-rails - 在哪里设置 locale_backend 以符合货币轨道的新变化?

money-rails gem 将抛出以下警告

文档说要设置:

并且,添加:

更新 en.yml 文件是不言自明的。但是,文档并不清楚在哪里设置 Money.locale_backend = :i18n。

这应该在新的初始化程序中吗?

0 投票
2 回答
1252 浏览

ruby-on-rails - Rails 在数据库中存储逗号后 2 位小数的数字

我正在为我的系统中的发票制作 PDF,我希望能够在数据库中存储两位小数的数字。我正在使用MoneyRailsgem 来处理货币,我已经设置precision: 10scale: 2在数据库级别(我postgres用作我的数据库),但我在逗号后只得到 1 个小数位。为什么?

发票.rb

在 Rails 控制台中,

是否可以在 DB 中存储两位小数的数字,例如20,000.00?我不想在视图中显示 PDF,因此我希望能够将数字放入我的数据库中,因为我从前端应用程序的参数中获取它,而无需在视图中进一步格式化它。

0 投票
0 回答
145 浏览

ruby - money-rails - 舍入方法

我在下面有这个方法:

例如,它输出:

formatted_price_for方法如下,它剥离了美分。

我不想剥夺美分,而是想把钱四舍五入并保留货币。所以使用上面的示例输出 -£785.71 -> £786

我怎样才能做到这一点?

0 投票
1 回答
565 浏览

ruby-on-rails - 如何配置money-rails gem以高于4位数的精度

我们在我们的应用程序中使用money-railsgem。到目前为止,我们可以使用 4 位小数精度,但我们需要切换到 6。不幸的是,我无法将更高精度的数字存储到 Postgres 中 - 数字在保存之前被四舍五入。

金钱本身似乎可以以更高的精度正常工作

在控制台中测试模型。保存前一切正常。

ActiveRecord 输出表明修剪后的数字实际上正在发送到数据库。(注意 181.12)。

有什么方法可以让money-railsgem 更精确地工作吗?似乎Money gem本身没有更高的精度问题。

0 投票
1 回答
119 浏览

ruby-on-rails - 在 mongoid 中使用 money-rails:如何为每个模型实例设置货币

我目前正在使用:

money-rails v1.12 rails v6 mongoid v7

我想设置每个模型实例使用的默认货币。

我已经在我的模型中设置了字段,如下所示

field :price, type: Money, with_model_currency: :currency

但是当我尝试创建或获取记录时,我得到了这个错误

如何with_model_currency在 rails mongoid 应用程序中使用该选项?我还能如何在 rails mongoid 应用程序中处理资金?

0 投票
1 回答
38 浏览

ruby-on-rails - 如何在 ActiveAdmin 中制作可排序的列?

我在 ActiveAdmin 的索引页上有列:

我在索引页面上使用 gemmoney-rails:credit_amount方法.format来提高可读性。

但是排序不起作用。我怎样才能使这个列从最大到最小排序,反之亦然?

0 投票
1 回答
1314 浏览

ruby-on-rails - 迁移到 Rails 6.1 后,使用 RSpec 不推荐使用 connection_config 警告

我将一个应用程序升级到 Rails 6.1.0(从 6.0.3.3,通过创建一个新的 api-only 应用程序,添加 RSpec,然后手动复制所需的文件)。

我在运行 RSpec 时看到以下警告:

我没有改变ApplicationRecord默认的类:

我只在运行 RSpec 时看到此警告。我没有在 Rails 控制台或 Rails 服务器日志中看到它。

这是我的config/database.yml

关于如何摆脱这种情况的任何建议?

0 投票
0 回答
33 浏览

ruby-on-rails - 从 Rails 中的其他模型继承字段并允许覆盖

我有两个模型,一个Product::Variant和一个Product::AvailableProduct(属于_to Product::Variant)。他们都有price_centscost_per_unit领域。

我正在使用money-rails gem,所以这些实际上是price_cents, price_currency, cost_per_unit_cents, 和cost_per_unit_currency在数据库中。

Product::Variant模型中,apricecost_per_unit是必需的,并且字段不可为空。当我创建 aProduct::AvailableProduct时,我希望priceandcost_per_unit继承自关联Product::Variant记录,并且priceandcost_per_unit为 nil,这意味着不应从Product::Variant. 只有当用户想要覆盖默认值时,这些字段才应该不为零。

我研究过delegate在该方法上使用一个方法Product::AvailableProduct,但似乎我不能有条件地委托。有没有更简化/优雅的方式来做到这一点?