2017-03-31 70 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