的Ruby-on-导轨:覆盖的update_attributes模型验证?
-
21-09-2019 - |
题
我有一个典型的,Post模型:
class Post< ActiveRecord::Base
validates_presence_of :user_id #Line 1
validates_presence_of :title,:body #Line 2
在控制器,我有:
def create
if request.post?
if login_required
@post = Post.new(params[:post]) #Line 3
@post .update_attribute("user_id",session[:userid]) #Line 4
然而,如果在第2行的验证失败后仍然会被创建的,除非4号线注释。
1)为什么?
2)上的修复连连呢?
由于
解决方案
这在该文档ActiveRecord的上update_attribute
条目: :持久性的:
更新的单个属性并保存 不通过会纪录 正常验证程序。这是 对布尔标志特别有用 现有记录。
好像它是一个漏洞,以帮助您避免验证的开销,当你做一个匆匆的调整,达到创纪录。如果你想验证,只需要使用
@post.update_attributes(:user_id => session[:userid])
不隶属于 StackOverflow