在Rails遷移中將列添加到現有表

我有一個須要一個:email列的Users模型(我忘記在初始支架中添加該列)。 html

我打開了遷移文件,並添加了t.string :email ,作了rake db:migrate ,獲得了NoMethodError 。 而後我添加了線 數據庫

add_column :users, :email, :string

再次rake db:migrate ,再次rake db:migrate NoMethodError 。 我在這裏錯過了一步嗎? ruby

編輯:這是遷移文件。 架構

class CreateUsers < ActiveRecord::Migration  
  def self.up  
    add_column :users, :email, :string  
    create_table :users do |t|  
      t.string :username  
      t.string :email  
      t.string :crypted_password  
      t.string :password_salt  
      t.string :persistence_token  

      t.timestamps  
    end  
  end  

  def self.down  
    drop_table :users  
  end  
end

#1樓

你也能夠 ide

rake db:rollback

若是還沒有向表中添加任何數據。而後經過向其添加電子郵件列來編輯遷移文件,而後調用 ui

rake db:migrate

若是您的系統中已安裝Rails 3.1及更高版本,則此方法將起做用。 spa

更簡單的方法是更改​​,讓遷移文件中的更改保持原樣。 採用 code

$rake db:migrate:redo

這將回滾上一次遷移並再次遷移。 htm


#2樓

在Rails控制檯上使用此命令 token

rails generate migration add_fieldname_to_tablename fieldname:string

rake db:migrate

運行此遷移


#3樓

要添加列,我只須要遵循如下步驟:

  1. rails generate migration add_fieldname_to_tablename fieldname:string

    另類

    rails generate migration addFieldnameToTablename

    生成遷移後,請編輯遷移並定義要添加該列的全部屬性。

    注意 :Rails中的表名稱始終是複數形式(以匹配數據庫約定)。 使用前面提到的步驟之一的示例-

    rails generate migration addEmailToUsers

  2. rake db:migrate

要麼

  1. 您能夠從db/schema.rb更改架構,在SQL查詢中添加所需的列。
  2. 運行如下命令: rake db:schema:load

    警告/注意

    請記住,運行rake db:schema:load自動擦除表中的全部數據。


#4樓

您能夠經過如下方式回滾上一次遷移

rake db:rollback STEP=1

或回滾此特定遷移

rake db:migrate:down VERSION=<YYYYMMDDHHMMSS>

並編輯文件,而後再次運行rake db:mirgate


#5樓

您也能夠這樣作.. rails g migration add_column_to_users email:string

而後rake db:migrate還要在用戶控制器中添加:email屬性;

有關更多詳細信息,請訪問http://guides.rubyonrails.org/active_record_migrations.html

相關文章
相關標籤/搜索