賞金將在 4 天后到期。此問題的答案有資格獲得 50聲望賞金。 Rajkaran Mishra正在從有信譽的來源尋找答案。
我有以下兩個遷移:
contextual_page_number一、向表中添加列transcripts:
class AddContextualPageNumberToTranscripts < ActiveRecord::Migration[5.2]
def change
add_column :transcripts, :contextual_page_number, :integer, default: 1
end
end
其次,根據另一列的值更改先前添加的列contextual_page_number的值:
class ChangePageOffsetAndContextualPageNumberOfTranscripts < ActiveRecord::Migration[5.2]
def up
Firm.all.find_in_batches do |group|
group.each do |firm|
Apartment::Tenant.switch(firm.tenant) do
Transcript.where.not(page_offset: 0).each do |transcript|
transcript.update(
contextual_page_number: ((transcript.page_offset - 1) * -1),
page_offset: 1
)
end
end
end
end
end
def down
..
end
end
運行遷移后,我收到未知屬性contextual_page_number錯誤。
== 20211108132509 AddContextualPageNumberToTranscripts: 遷移 ============== -- add_column(:transcripts, :contextual_page_number, :integer, {:default=>1}) -> 0.0095s == 20211108132509 AddContextualPageNumberToTranscripts: 已遷移(0.0096s) ====
== 20220113095658 ChangePageOffsetAndContextualPageNumberOfTranscripts:遷移 Rails 中止!StandardError:發生錯誤,此遷移和所有后續遷移已取消:
成績單的未知屬性“contextual_page_number”。
我什至嘗試過reset_column_information,但沒有運氣:
Apartment::Tenant.switch(firm.tenant) do
Transcript.connection.schema_cache.clear!
Transcript.reset_column_information
..
end
任何線索都會有很大幫助,謝謝。
uj5u.com熱心網友回復:
您需要兩個遷移檔案。首先,嘗試運行遷移并檢查schema.rb表transcripts并驗證是否contextual_page_number正在添加新添加的列。
一旦您確定添加了新列,然后再次創建一個新的遷移,例如:MigrateTransriptsCloningsData,然后在up塊中添加所需的更改,然后執行db:migrate以更新所需的更改。
我的選擇是添加一個新的 rake 任務并執行它。就像bundle exec rake migrate_transcripts_data:start不是將邏輯保留在 db/migrate/your_new_migration_file 中,選擇是你的。
uj5u.com熱心網友回復:
reset_column_information如果您想在遷移中使用模型,應該是解決此類問題的正確方法。不過,這并非沒有問題。
我懷疑問題是您以某種方式呼叫它為時已晚。把它放在第二次遷移的 up 方法中或add_column第一次遷移之后。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/414598.html
標籤:
上一篇:找不到react-redux背景關系值;請確保組件包含在<Provider>中,盡管組件包含在提供程式中
下一篇:如何取消資料框中的特定日期?
