如何使用Rails控制台更新Heroku上的记录?

时间:2017-03-22 17:16:01

标签: ruby-on-rails heroku

我正在尝试更新由Heroku托管的应用程序上的记录,但更改仍在恢复。这个过程适用于我的本地版本,所以我不知道发生了什么。

使用Postgres的Rails 5

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
=> []

1 个答案:

答案 0 :(得分:0)

如果其他人遇到此问题,模型中的验证会阻止数据库更新。考虑到update_attribute应绕过验证,这一点特别奇怪。

无论如何这里是罪魁祸首......

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

...删除了这个并且它有效。虽然不是很好的工作。