显示/接受数字形式字段中的一个值(例如年龄)但存储另一个值(例如出生年份)

时间:2015-03-07 00:44:46

标签: ruby-on-rails forms

我可以在编辑/更新/创建控制器操作中进行转换,但有更优雅的方法吗?使用集合时,使用value_method / display_method非常容易。但是当我尝试使用一个简单的整数输入字段时,value_method / display_method似乎不起作用,或者我的语法错误。我也很难在谷歌上找到任何关于这个的事情。

理想情况下,该解决方案既适用于新功能,也适用于编辑功能,因此用户始终可以看到/输入表单中的年龄值,但它始终存储为yob。

1 个答案:

答案 0 :(得分:0)

您可以在模型级别执行此操作...

class User < ActiveRecord::Base

attr_accessor :age

  before_save :determine_year_of_birth
  after_find :determine_age

  def determine_year_of_birth
    self.year_of_birth = Date.today.year - age
  end

  def determine_age
    self.age = Date.today.year - year_of_birth
  end

end