1
通常のデータベース列では、列タイプに応じてRubyのデータ型が自動的に選択されます。つまり、decimal
/integer
/varchar
列が最終的にBigDecimal
/Fixnum
/String
属性になります。動的列に使用するデータ型を定義するにはどうすればよいですか?
しかし、私は、計算列
Model.select(['models.*', 'calculated_int_column']).other_arel_stuff
を使用してデータベースを照会する場合は、属性calculated_int_column
はいつも、私はselect文でinteger
に明示的なキャストを使用している場合でも、String
オブジェクトが含まれています。
これは、Railsがスキーマを使用して列の種類を検索するためです。
この列に使用するRubyタイプをRailsにどのように伝えることができますか?
ありがとうございます。これはあなたが望む答えですが、あなたは整数を返すためにgetterメソッドを上書きすることができれば
は、私はむしろ、@ calculated_int_column.nilない限り'@calculated_int_column.to_iで行くと思いますが '私は多くの計算された属性を持っているので、より一般的な解決策を望んでいました。 (将来のキャッシング機能はそれらを減らすかもしれませんが) –
ええ、あなたのアプリケーションを壊すかもしれないゼロの値を返すことはちょうど場合のために最初の行を置くことでしたかどうか分かりませんでした。 – agmcleod