[英]ruby-on-rails: update_attributes overrides model validations?
我有一个典型的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 :: Persistence的文档中 update_attribute
上的条目中:
更新单个属性并保存记录,而无需执行正常的验证过程。 这对于现有记录上的布尔标志特别有用。
似乎是一个漏洞,可以帮助您避免在对记录进行快速调整时避免验证的开销。 如果要验证,只需使用
@post.update_attributes(:user_id => session[:userid])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.