ActiveRecord :: Base.store自动类型转换

Pet*_*own 5 ruby casting ruby-on-rails ruby-on-rails-3.2

有没有办法自动对使用ActiveRecord :: Base.store存储的值进行类型转换?

拿这个完全不切实际的例子:

class User < ActiveRecord::Base
  store :settings, accessors: [ :age ]
end

user = User.new(age: '10')
user.age # => '10'
Run Code Online (Sandbox Code Playgroud)

我知道我可以覆盖年龄的读取器方法将其转换为整数,但我很好奇是否有一种无证的方法.

试图避免这种情况:

class User < ActiveRecord::Base
  store :settings, accessors: [ :age ]

  def age
    settings[:age].to_i
  end
end

user = User.new(age: '10')
user.age # => 10
Run Code Online (Sandbox Code Playgroud)

更新

寻找类似的东西:

class User < ActiveRecord::Base
  store :settings, accessors: {:age => :to_i}
end
Run Code Online (Sandbox Code Playgroud)

要么:

class User < ActiveRecord::Base
  store :settings, accessors: {:age => Integer}
end
Run Code Online (Sandbox Code Playgroud)

Pet*_*own 2

从 Rails 3.2.7 开始,没有办法自动对值进行类型转换。如果我遇到一种方法,我会更新这个问题:/