カテゴリー:
Rails
タグ:
 Rails Ruby 多倍長整数

このエントリーをはてなブックマークに追加
更新日時:
2015年06月27日(土)
作成日時:
2015年06月27日(土)

前の記事 / 次の記事

Rubyの整数は数が大きくなると自動的に多倍長整数として扱われる。
らしいのでRuby上では整数が31ビットを超えても問題ないっぽいのだけど、
Railsで扱おうとしたらDBに格納する時に値でか過ぎって言われて入らかったので無理矢理入れたメモ。

Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Bignumクラス

整数で保存できないなら単純に文字列で保存すればいいのかなと。

class CreateUniverses < ActiveRecord::Migration
  def change
    create_table :universes do |t|
      t.string :name
      t.string :star_count # 巨大な整数が入る予定のカラム

      t.timestamps
    end
  end
end

みたいに定義してモデルのアクセサに細工する。

class Universe < ActiveRecord::Base
  def star_count
    self[:star_count].to_i
  end
end

値を代入するときは数値だろうと文字列だろうとカラムの型が文字列であれば、自動的に文字列に変換されて格納されるので特に細工しなくて問題ない。