Ruby on rails Rails:为什么update_属性会自动转换类型

Ruby on rails Rails:为什么update_属性会自动转换类型,ruby-on-rails,type-conversion,update-attribute,Ruby On Rails,Type Conversion,Update Attribute,例如,假设我有一个具有整数列“pet_id”的用户模型 如果我跑 user = User.new user.update_attribute(:pet_id, '1') 它会自动将字符串“1”转换为整数1。此转换在何处发生?这是活动记录中负责类型转换的方法 def type_cast(value) return nil if value.nil? return coder.load(value) if encoded? klass = self.class

例如,假设我有一个具有整数列“pet_id”的用户模型

如果我跑

user = User.new
user.update_attribute(:pet_id, '1')

它会自动将字符串“1”转换为整数1。此转换在何处发生?

这是活动记录中负责
类型转换的方法

def type_cast(value)
    return nil if value.nil?
    return coder.load(value) if encoded?

    klass = self.class

    case type
    when :string, :text        then value
    when :integer              then klass.value_to_integer(value)
    when :float                then value.to_f
    when :decimal              then klass.value_to_decimal(value)
    when :datetime, :timestamp then klass.string_to_time(value)
    when :time                 then klass.string_to_dummy_time(value)
    when :date                 then klass.value_to_date(value)
    when :binary               then klass.binary_to_string(value)
    when :boolean              then klass.value_to_boolean(value)
    else value
    end
  end
要了解rails的详细信息,请访问这三个站点

1) 思博特博客

2) 肯·柯林斯

3) Rails
activerecord