1

通常のデータベース列の場合、Rails は列の型に応じて一致する Ruby データ型を自動的に選択します。つまり、 //列decimalは最終的に //integer属性になります。varcharBigDecimalFixnumString

しかし、計算列を使用してデータベースにクエリを実行すると

Model.select(['models.*', 'calculated_int_column']).other_arel_stuff

selectステートメントで明示的なキャストを使用しても、属性にcalculated_int_columnは常にオブジェクトが含まれます。Stringinteger

これは、Rails がスキーマを使用して列の型を検索しているためだと思います。

この列に使用する Ruby タイプを Rails に伝えるにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

0

これがあなたの望む答えであるかどうかはわかりませんが、getterメソッドを上書きして整数を返すことができます。

class Model
  def calculated_int_column
    @calculated_int_column = 0 if @calculated_int_column.nil?
    @calculated_int_column.to_i
  end
end
于 2012-04-24T20:02:09.170 に答える