Rails 4 将现有列的默认值设置为零

Ahm*_*uny 4 sqlite ruby-on-rails ruby-on-rails-4

这个问题不能再解释了。

db/migrate/20140415150026_create_poll_answers.rb

class CreatePollAnswers < ActiveRecord::Migration
  def change
    create_table :poll_answers do |t|
      t.string :content
      t.integer :counter 
      t.boolean :instant_value
      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

数据库/模式

create_table "poll_answers", force: true do |t|
  t.string   "content"
  t.integer  "counter"
  t.boolean  "instant_value"
  t.datetime "created_at"
  t.datetime "updated_at"
  t.integer  "poll_question_id"
end 
Run Code Online (Sandbox Code Playgroud)

我找到了一个答案,但我不确定它是否适用于 rails 4,我也不知道应该在哪里写!!!

add_column :Table_name, :colman_name, :data_type, :default => "default"
Run Code Online (Sandbox Code Playgroud)

rai*_*com 8

您可以简单地为新迁移设置这样的默认值:

create_table :poll_answers, force: true do |t|
  t.string  :content, default: 'no_text'
  t.integer :counter, default: 0
  t.float   :money_in_pocket, default: 0.0 
 end
Run Code Online (Sandbox Code Playgroud)

或者您可以像这样更改现有的迁移:

def change
  change_column :poll_answers, :counter, :integer, default: 100
end
Run Code Online (Sandbox Code Playgroud)

或者更短:

change_column_default(:poll_answers, :counter, 3000)
Run Code Online (Sandbox Code Playgroud)