使用money-rails将字段货币化时的未知属性

时间:2015-07-15 22:27:51

标签: ruby-on-rails postgresql currency money-rails

我有以下课程,我希望使用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

1 个答案:

答案 0 :(得分:1)

根据 Money Rails gem documentation,在这种情况下不需要 :as。仅当您使用另一个 db 列名称时才应使用它,或者您更喜欢 money 属性的另一个名称。

在您的情况下,因为您的 db 列名称已经采用 gem 期望的格式。你只需要做

monetize :unit_price_cents

然后在您的 LineItem 实例上调用 unit_price 以获取货币化对象

@lineitem = LineItem.first
@lineitem.unit_price