如何定义用于动态列的数据类型?

时间:2012-04-24 19:55:47

标签: ruby-on-rails ruby-on-rails-3.1

对于普通数据库列,Rails会根据列类型自动选择匹配的Ruby数据类型,即decimal / integer / varchar列最终为BigDecimal / { {1}} / Fixnum属性。

但是,如果我使用计算列

查询数据库
String

属性Model.select(['models.*', 'calculated_int_column']).other_arel_stuff 始终包含calculated_int_column对象,即使我在select语句中使用显式强制转换为String

我猜这是因为Rails使用模式来查找列类型。

如何告诉Rails哪个Ruby类型用于此列?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

不确定这是否是您想要的答案,但您可以覆盖getter方法以返回整数:

class Model
  def calculated_int_column
    @calculated_int_column = 0 if @calculated_int_column.nil?
    @calculated_int_column.to_i
  end
end