首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Money-rails gem:如何在ActiveRecord查询中使用Money对象?

Money-rails gem:如何在ActiveRecord查询中使用Money对象?
EN

Stack Overflow用户
提问于 2014-03-08 19:12:29
回答 1查看 1.4K关注 0票数 0

在安装money-rails gem之前,我在控制器中有了以下查询:

代码语言:javascript
复制
@forecasts.where('max >= ?', @budget).limit(1)[0]

其中:budget是表forecasts中的整数列。

安装money-rails后,我将该列重命名为:budget_subunits,在:budget_subunits模型中输入monetize: :budget_subunits as: :budget,使:budget现在成为Money对象。现在,此查询将导致以下错误:

代码语言:javascript
复制
PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "--- !ruby/object:Money fractional: 4000000000.0 currency: !ruby/object:Money::Currency id: :usd priority: 1 iso_code: USD name: United States Dollar symbol: $ alternate_symbols: - US$ subunit: Cent subunit_to_unit: 100 symbol_first: true html_entity: $ decimal_mark: . thousands_separator: ',' iso_numeric: '840' bank: !ruby/object:Money::Bank::VariableExchange rounding_method: rates: {} mutex: !ruby/object:Mutex {} " LINE 1: ...get_segments"."budget_source_id" = $1 AND (max >= '--- !ruby... ^ : SELECT "budget_segments".* FROM "budget_segments" WHERE "budget_segments"."budget_source_id" = $1 AND (max >= '--- !ruby/object:Money fractional: 4000000000.0 currency: !ruby/object:Money::Currency id: :usd priority: 1 iso_code: USD name: United States Dollar symbol: $ alternate_symbols: - US$ subunit: Cent subunit_to_unit: 100 symbol_first: true html_entity: $ decimal_mark: . thousands_separator: '','' iso_numeric: ''840'' bank: !ruby/object:Money::Bank::VariableExchange rounding_method: rates: {} mutex: !ruby/object:Mutex {} ') ORDER BY "budget_segments".max ASC LIMIT 1

我知道我只需要使用:budget_subunits列,并将其与:max_subunits列进行比较,但这难道不就会辜负使用money-rails创业板的全部目的吗?

简单地说,如何在activerecord查询中使用Money对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-08 19:27:50

调用cents将其转换为它的美分值,并对其进行查询。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22273808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档