我正试图让money-rails gem工作,我遇到了问题......
其他类似的stackoverflow问题已有6年历史。
以下是我在相应专栏中提供的产品:
class Transactions < ActiveRecord::Base
belongs_to :user, optional: true
validates :trans_id, uniqueness: true
monetize :price_cents
end
我已经在我的Gemfile中获得了gem,并成功运行了bundle install。
当我创建一个新项目并用pry查看它时,
create(vendor:"foo",amount:2.6,trans_id:'123cccc')
id: nil,
vendor: "foo",
amount_cents: 260,
amount_currency: "USD",
trans_id: "123cccc",
tax_cents: 150,
total_cents:410,
在这种情况下,通过从列名中删除_cents后缀来自动创建money属性的名称。
答案 0 :(得分:0)
money
gem以美分存储金额,在表定义中,2个字段将定义属性。
例如,考虑在amount
中使用属性Transaction
。在schema.rb
中,您会找到2个字段:amount_cents
和amount_currency
。
所以,现在你将拥有一个带有货币对象的transaction.amount
。
有钱对象你可以:
3)'自动属性'
进行迁移:
class AddAmountToClient < ActiveRecord::Migration
def change
add_monetize :clients, :amount
end
end
迁移后,您可以在schema.rb
中找到create_table "clients", force: :cascade do |t|
t.integer "amount_cents", limit: 8, default: 0, null: false
t.string "amount_currency", default: "USD", null: false
end
对于attribute is created automagically by removing the _cents
说的是什么,这意味着您可以从amount
类访问Client
属性,client.amount
有一个货币对象。