premium_from
postgres テーブルに datetime 列を設定 する rails migration を書いています。
人口に問題はありませんが、datetime 属性を に戻そうとすると、rails または postgres のいずれかが何もしていないように見えるため、移行のためのロールバック メソッドの作成に行き詰まっていますnil
。有用なエラー メッセージも出力できなかったので、何が起こっているのかまったくわかりません。
これが私の最新の反復です(他に何も機能しないように見えるため、必死になってアカウントを個別に操作してみました):
def self.down
Account.where('premium_from is not null').each do |a|
a.update_attribute(:premium_from, 'null')
end
end
これは陽気に約 7 秒間実行され、入力されたすべてのpremium_from
エントリがそのまま残り、Google でも有用なものを見つけることができません。
nil
postgres でdatetime 列のエントリを設定する方法を知っている人はいますか?
それとも、明らかなことを見落としているだけですか?
編集:アップはこのようになります
csv.each do |row|
if account = Account.premium.find_by_name(row.first)
# This .find is necessary because .premium uses a join, meaning that it returns
# read-only objects
Account.find(account.id).update_attribute(:premium_from, Time.parse(row.last))
end
end