2017-03-22 3 views
0

私はHerokuによってホストされているアプリでレコードを更新しようとしていますが、変更は元に戻ります。プロセスは私のローカルバージョンで動作するので、何が起こっているのかわかりません。誰がこの問題を持っている場合はPostgresRailsコンソールを使用してHeroku上のレコードをどのように更新しますか?

heroku run rails c 
new_value = "Some valid value" 
post = Post.find(123) 
post.update_attribute(:name, new_value) 
D, [2017-03-22T17:01:30.955525 #4] DEBUG -- : (0.9ms) BEGIN 
D, [2017-03-22T17:01:30.961653 #4] DEBUG -- : (2.2ms) COMMIT 
=> true 
post.name 
=> nil 

#Try another way 
post.name = new_value 
post.valid? 
=> true 
post.save 
D, [2017-03-22T16:53:28.405310 #4] DEBUG -- : (1.6ms) BEGIN 
D, [2017-03-22T16:53:28.427131 #4] DEBUG -- : (1.5ms) COMMIT 
=> true 
p.reload 
p.name 
=> nil 
p.errors.full_messages 
=> [] 
+0

'post.save(name:new_value)'を試してみたらどうなりますか? – mmichael

+1

ええ、私はこの問題が英雄に関係しているのではないかと疑います。私はここから何が起こっているのかはわかりませんが、あなたのコードに隠された問題があると思われます。 istは正確に一部のデータセット(=>データベースのローカルクローン)でローカルに動作しますか?投稿モデルのコードを表示できますか? (または名前に関連するコードがたくさんある場合) – trueunlessfalse

+0

@mmichael no luck –

答えて

0

レール5は、モデルでの検証は更新されてからデータベースを停止しました。 update_attributeが検証をバイパスすると考えられるのは特に奇妙です。とにかくここ

が犯人だった...

format: { with: URI::regexp(["http", "https"]) } 

は...これを削除し、それが働きました。しかし、素晴らしい作品ではありません。

関連する問題