ruby-on-rails-3 – 活跃的管理员和金钱

ruby-on-rails-3 – 活跃的管理员和金钱,第1张

概述我正在使用 money – https://github.com/RubyMoney/money gem的活跃管理员.我有一些由金钱宝石处理的属性. money gem以美分存储值.当我创建一个具有活动管理员的条目时,将在DB中创建正确的值(5000表示50.00). 但是,当我编辑一个条目时,该值乘以100,这意味着AA显示5000表示原始输入为50.00.如果我用money属性编辑任何东西,它 我正在使用 money – https://github.com/RubyMoney/money gem的活跃管理员.我有一些由金钱宝石处理的属性.

money gem以美分存储值.当我创建一个具有活动管理员的条目时,将在DB中创建正确的值(5000表示50.00).

但是,当我编辑一个条目时,该值乘以100,这意味着AA显示5000表示原始输入为50.00.如果我用money属性编辑任何东西,它将乘以100.在创建时,该值通过货币逻辑,但在编辑时,不知何故活动管理员跳过该部分显示美分而不是最终货币值.
有没有办法在主动管理中使用money gem?

例如:

form :HTML => { :enctype => "multipart/form-data"} do |f|  f.inputs "Products" do    ......    f.has_many :pricings do |p|      p.input :price      p.input :_destroy,:as => :boolean,:label=>"Effacer"    end  f.actions :publishend

型号:

# enCoding: utf-8 class Pricing < ActiveRecord::Basebelongs_to :priceable,:polymorphic => trueattr_accessible :pricecomposed_of :price,:class_name => "Money",:mapPing => [%w(price cents),%w(currency currency_as_string)],:constructor => Proc.new { |cents,currency| Money.new(cents || 0,currency || Money.default_currency) },:converter => Proc.new { |value| value.respond_to?(:to_money) ? value.to_money : raise(ArgumentError,"Can't convert #{value.class} to Money") }end
解决方法 Rails callbacks对于创建此类问题的解决方案非常方便.

我只想使用和after_update回调.

例:

# enCoding: utf-8     class Pricing < ActiveRecord::Base    after_update :fix_price    belongs_to :priceable,:polymorphic => true    attr_accessible :price    composed_of :price,"Can't convert #{value.class} to Money") }    def fix_price     self.price = (self.price/100)    end    end
总结

以上是内存溢出为你收集整理的ruby-on-rails-3 – 活跃的管理员和金钱全部内容,希望文章能够帮你解决ruby-on-rails-3 – 活跃的管理员和金钱所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1268485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存