Ruby on rails 重写属性函数rails mongoid

Ruby on rails 重写属性函数rails mongoid,ruby-on-rails,function,attributes,overriding,mongoid,Ruby On Rails,Function,Attributes,Overriding,Mongoid,我有一个这样的模型 class Money include Mongoid::Document #interval is how often the compensation is paid field :salary, :type => Integer # must be saved in cents field :commission, :type => Integer # must be saved in cents field :total, :type

我有一个这样的模型

class Money
  include Mongoid::Document

  #interval is how often the compensation is paid
  field :salary, :type => Integer # must be saved in cents
  field :commission, :type => Integer # must be saved in cents
  field :total, :type => Integer # must be saved in cents
end
总额是工资和佣金的总和。工资和佣金都以美分计。 但我的问题是,当它被编辑时,我需要以美元数字显示它

例如,如果分工资是5000000,那么当我按下编辑时,我需要在工资文本框中看到50000


其他一些解决方案也很受欢迎

查看
ActionView::Helpers::NumberHelper
。在您的情况下,您可以编写自己的助手,如下所示:

def money_to_textbox (money)
    money / 100
end
<%= money_to_textbox @money %>
此帮助器方法应放置在app\helpers中,然后放置在您可以使用的视图中,如下所示:

def money_to_textbox (money)
    money / 100
end
<%= money_to_textbox @money %>

如果要在模型级别强制执行此模式,则可以覆盖setter和getter:

class Money
  #...
  def salary
    self.salary / 100
  end
  def salary=(value)
    self.salary * 100
  end
end
在这种情况下,您可以免费编辑/显示,而无需编写任何帮助程序

尽管如此,我认为正确的方法是在视图级别通过助手定义来实现。模型不应该关注这一点