在我的 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/