2017-03-31 135 views
0

我最終遇到了一個表格比較大的情況,我需要爲它添加一個新列。聽起來很簡單嗎?好吧,有一個問題 - 我還需要根據已經存在的數據填寫新的列,但我不知道如何自動執行此過程。SQLite + rails - 使用數據庫

我有專欄'標題'和'title_de',新欄目是'lang'。根據'title'是否爲空,新欄目應該包含'de'或'eng'(空白'title'表示'de',非空白表示'eng')。

如何解決這個問題?

回答

1

你會想要做這樣的事情:

class AddColumnToItems < ActiveRecord::Migration[5.0] 
    def change 
    add_column :items, :lang, :string 
    ActiveRecord::Base.transaction do 
     Item.all.each do |item| 
     item.lang = "de" 
     item.lang = "eng" unless item.title.blank? 
     item.save 
     end 
    end 
    end 
end 

然後:

rake db:migrate 

我希望可以解決您的問題!

+0

如果item.title.nil?'item變爲'item.title.nil?''item,那麼改變'item.lang =「eng」取得這個錯誤''undefined method'each'for#' – user3735111

+1

'Item.all.each' – user2954587

+0

。 lang =「eng」除非item.title.blank?'和上面的建議使用'Item.all.each',就像一個魅力! – user3735111