ruby-on-rails - Rails update_attributes 不适用于 Postgresql

标签 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

在我的 Rails 项目中,我使用的是 Postgresql。

User.find_by_sql("update users set address = '#{params[:address]}' where id = #{current_user.id}")

此代码工作正常,但等效的 activerecord 不工作:

   user = User.find(current_user.id)
   user.update_attributes(:address => params[:address])

它总是显示开始;在日志中回滚。 你能解释一下为什么会这样吗?是否有任何与 Postgres 相关的问题? 我正在使用 Rails 3.2

编辑

我发现我哪里错了......验证失败导致了这个。 解决方案是:

  user.update_column(:address,params[:address])

这将绕过验证。 谢谢大家的帮助。

最佳答案

update_attributes如果所有验证都通过,则更新记录,因此您的验证之一肯定失败了,使用 user.errors 找出错误:

user = User.find(current_user.id)
user.update_attributes(:address => params[:address])
puts user.errors

为了保存单列,使用update_attribute .

user.update_attribute(:address, params[:address])

关于ruby-on-rails - Rails update_attributes 不适用于 Postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16857154/

相关文章:

ruby-on-rails - Twitter Bootstrap 默认的 Flash 消息的自定义类和格式

ruby-on-rails - 用于定期作业调度的工具/库(例如轮询网页)

ruby-on-rails-3 - Ruby on Rails : PdfKit Runtime Error

ruby-on-rails-3 - 无法在山狮上安装json gem

mysql - Rails 在 created_at 和 updated_at 中插入无效的日期时间

mysql - 在 rails 中使用特定的 mysql 索引

mysql - Rails 中具有不同列值的所有记录的组合

ruby-on-rails - 使用 link_to 调用 Controller 操作

ruby-on-rails - RSpec、Capybara、JavaScript 测试未正确回滚数据库

ruby-on-rails - PostgreSQL Database Browser for Rails 3.2 app - Induction App instead of SQLite Database Browser