0
Restream::Custom
というモデルと属性url
というモデルがあります。次に、url
という属性を2つに分割して、server_url
とkey
という2つの属性を必要とするようにしました。モデルコードが変更された後にデータ更新によるマイグレーションを実行
def up
add_column :restream_customs, :key, :string
Restream::Custom.find_each do |r|
last_slash = r.url.rindex("/")
r.key = r.url[last_slash + 1 .. -1] #everything after last slash
r.url = r.url[0 .. last_slash - 1] #everything before last slash
r.save!
end
change_column :restream_customs, :key, :string, null: false
rename_column :restream_customs, :url, :server_url
end
をそして、それは開発にうまく働いた: 私はこのために、このような移行を書きました。その後、私はrestream/custom.rb
に多くの変更を加えてserver_url
で作業し、それを検証しました。 r.save!
を実行すると、validates :server_url, presence: true
となり、unknown attribute 'server_url' for Restream::Custom
がスローされるため、この移行は結果的にステージングに失敗し(プロダクションでは失敗します)。
これを正しく変更するにはどうすればよいですか? 1ターンで可能ならば。 (レポから数回引っ張らないでください)。
...明らかに偉大前
server_url
に列url
の名前を変更してみてください!ありがとう!しかし、まだ1つの問題が残っています:同じエラーを発生させる私の 'custom.rb'に' validates:key、presence:true'も持っています:( – NgoralいくつかのURLは 'key' –