我有以下课程,我希望使用monetize
gem money-rails
几个字段。
class LineItem < ActiveRecord::Base
monetize :unit_price_cents
monetize :total_cents
end
这是架构的外观:
create_table "line_items", force: :cascade do |t|
t.integer "invoice_id"
t.float "quantity"
t.string "unit_type"
t.string "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "unit_price_cents", null: false
t.integer "total_cents", null: false
end
出于某种原因,我得到undefined method 'unit_price' for #<LineItem:0x007ffb7881eb80>
除非我在货币化字段中添加别名:
monetize :unit_price_cents, as: :unit_price
答案 0 :(得分:1)
根据 Money Rails gem documentation,在这种情况下不需要 :as
。仅当您使用另一个 db 列名称时才应使用它,或者您更喜欢 money 属性的另一个名称。
在您的情况下,因为您的 db 列名称已经采用 gem 期望的格式。你只需要做
monetize :unit_price_cents
然后在您的 LineItem 实例上调用 unit_price
以获取货币化对象
@lineitem = LineItem.first
@lineitem.unit_price