人生のヒント

私が経験したことが、誰かの人生のヒントになればと願い書きます。

Ruby On Railsでテーブルにカラムを追加する方法

スポンサーリンク

f:id:hinthint:20160829185328j:plain

まず、下記コマンドで、モデルのカラムを確認します。(例ではUser、rootでサーバにログインします。)

# su - rails

$ cd work/foo

$ rails c

irb(main):001:0> User.column_names
=> ["id", "name", "email", "created_at", "updated_at"]

irb(main):002:0> exit

 

1.カラムの追加

今回は、こんなカラムを追加します。

カラム名 データ型
latitude decimal{14,11}
longitude decimal{14,11}
address string

 

ちなみに、decimal{14,11}は、全体の桁数14、小数点以下の桁数11の数字のデータ型です。数字は適切に変更してください。

$ rails generate migration AddLatitudeToUser 'latitude:decimal{14,11}'

$ rails generate migration AddLongitudeToUser 'longitude:decimal{14,11}'

$ rails generate migration AddAddressToUser address:string

$ rake db:migrate

 

2.カラムを確認

次に、再度、カラムを表示します。

$ cd work/foo

$ rails c

irb(main):001:0> User.column_names
=> ["id", "name", "email", "created_at", "updated_at", "latitude", "longitude", "address"]
irb(main):002:0> User.column_types
=> {"id"=>#<ActiveRecord::Type::Integer:0x007fbffbc726e0 @precision=nil, @scale=nil, @limit=4, @range=-2147483648...2147483648>, "name"=>#<ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::MysqlString:0x007fbffbc71218 @precision=nil, @scale=nil, @limit=255>, "email"=>#<ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::MysqlString:0x007fbffbc71218 @precision=nil, @scale=nil, @limit=255>, "created_at"=>#<ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::MysqlDateTime:0x007fbffbc70278 @precision=nil, @scale=nil, @limit=nil>, "updated_at"=>#<ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::MysqlDateTime:0x007fbffbc70278 @precision=nil, @scale=nil, @limit=nil>, "latitude"=>#<ActiveRecord::Type::Decimal:0x007fbffbc6aee0 @precision=14, @scale=11, @limit=nil>, "longitude"=>#<ActiveRecord::Type::Decimal:0x007fbffbc6aee0 @precision=14, @scale=11, @limit=nil>, "address"=>#<ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::MysqlString:0x007fbffbc71218 @precision=nil, @scale=nil, @limit=255>}

irb(main):003:0> exit

 カラム名に対して、データ型が適切であることを確認します。