[解決済み] 既存のRailsカラムのbooleanに:default => trueを追加する。
質問
私はいくつかの質問(すなわち
これ
このSOでは、既存のカラムにデフォルトのブール値を追加することについて説明しています。そこで、私は
change_column
を提案しましたが、私のやり方が悪いのでしょう。
試してみました。
$ change_column :profiles, :show_attribute, :boolean, :default => true
を返します。
-bash: change_column: command not found
その後、実行しました。
$ rails g change_column :profiles, :show_attribute, :boolean, :default => true
...そして
$ rails change_column :profiles, :show_attribute, :boolean, :default => true
そして、次のように実行します。
rake db:migrate
の値は
:show_attribute
のままでした。
nil
. 上で参照した質問では、PostgreSQLでは手動で更新する必要があると書かれています。私はPostgreSQLを使用しているので、以下のように私の
create_profiles
のマイグレーションになります。
t.boolean :show_attribute, :default => true
どなたか、私が何を間違えているのか教えていただけませんか?
解決方法は?
change_column
のメソッドです。
ActiveRecord::Migration
ということで、コンソールでそのように呼び出すことはできません。
このカラムにデフォルト値を追加したい場合は、新しいマイグレーションを作成します。
rails g migration add_default_value_to_show_attribute
そして、作成されたマイグレーションで
# That's the more generic way to change a column
def up
change_column :profiles, :show_attribute, :boolean, default: true
end
def down
change_column :profiles, :show_attribute, :boolean, default: nil
end
または、より具体的なオプション。
def up
change_column_default :profiles, :show_attribute, true
end
def down
change_column_default :profiles, :show_attribute, nil
end
次に、以下を実行します。
rake db:migrate
.
すでに作成されたレコードには何も変更されません。これを行うには
rake task
または
rails console
を作成し、すべてのレコードを更新します (実稼働環境ではお勧めしません)。
を追加したとき
t.boolean :show_attribute, :default => true
に
create_profiles
のマイグレーションは、何もしていないことが予想されます。まだ実行されていないマイグレーションのみが実行されます。もし、新しいデータベースで始めたのなら、デフォルトを true に設定するでしょう。
関連
-
[解決済み] SocketError (getaddrinfo: Name or service not known) - Sunspot/Solr Rails development
-
[解決済み] 変更欄のRailsマイグレーション
-
[解決済み] PGError: エラー: リレーションのカラムが存在しない
-
[解決済み] モデルで `save` と `save!` はいつ使うのか?
-
[解決済み] Rails 3 - link_to を image_tag + text で表示する。
-
[解決済み] Railsマイグレーションで、既存のテーブルにカラムを追加する
-
[解決済み] Railsのインストール時に「/usr/binディレクトリに書き込み権限がありません」というエラーが発生しますが、どのように修正すればよいですか?
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み】rmagick gem install "Can't find Magick-config"...
-
[解決済み] 既存のRailsカラムのbooleanに:default => trueを追加する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PGError: エラー: リレーションのカラムが存在しない
-
[解決済み] Rails 3 - link_to を image_tag + text で表示する。
-
[解決済み] Railsのインストール時に「/usr/binディレクトリに書き込み権限がありません」というエラーが発生しますが、どのように修正すればよいですか?
-
[解決済み] Herokuのデータベースを空にする方法
-
[解決済み] REST JSON APIのサーバーとクライアントを分離?[クローズド]
-
[解決済み】rmagick gem install "Can't find Magick-config"...
-
[解決済み] 新しいRailsアプリを作成するときに、test-unitではなくRSpecを使用するようにRailsに指示するにはどうすればよいですか?
-
[解決済み] githubからあるgemの特定の「コミット」を取得するには?
-
[解決済み] 既存のRailsカラムのbooleanに:default => trueを追加する。
-
[解決済み] サインアップするためのDeviseルートを削除するにはどうすればよいですか?