0
我最终遇到了一个表格比较大的情况,我需要为它添加一个新列。听起来很简单吗?好吧,有一个问题 - 我还需要根据已经存在的数据填写新的列,但我不知道如何自动执行此过程。SQLite + rails - 使用数据库
我有专栏'标题'和'title_de',新栏目是'lang'。根据'title'是否为空,新栏目应该包含'de'或'eng'(空白'title'表示'de',非空白表示'eng')。
如何解决这个问题?
我最终遇到了一个表格比较大的情况,我需要为它添加一个新列。听起来很简单吗?好吧,有一个问题 - 我还需要根据已经存在的数据填写新的列,但我不知道如何自动执行此过程。SQLite + rails - 使用数据库
我有专栏'标题'和'title_de',新栏目是'lang'。根据'title'是否为空,新栏目应该包含'de'或'eng'(空白'title'表示'de',非空白表示'eng')。
如何解决这个问题?
你会想要做这样的事情:
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
我希望可以解决您的问题!
如果item.title.nil?'item变为'item.title.nil?''item,那么改变'item.lang =“eng”取得这个错误''undefined method'each'for#' –
user3735111
'Item.all.each' – user2954587
。 lang =“eng”除非item.title.blank?'和上面的建议使用'Item.all.each',就像一个魅力! – user3735111