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