ruby-on-rails:update_attributes 覆盖模型验证?
我有一个典型的 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 行的验证失败,则仍将创建 Post,除非第 4 行被注释掉。
1)为什么?
2)关于修复的建议?
谢谢
I have a typical, Post model:
class Post< ActiveRecord::Base
validates_presence_of :user_id #Line 1
validates_presence_of :title,:body #Line 2
in the controller, I have:
def create
if request.post?
if login_required
@post = Post.new(params[:post]) #Line 3
@post .update_attribute("user_id",session[:userid]) #Line 4
However, if the validations on Line 2 fail the Post will still be created, unless Line 4 is commented out.
1) Why?
2) Suggestions on a fix?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
来自 中
update_attribute
的条目ActiveRecord::Persistence 的文档:似乎这是一个漏洞,可以帮助您在对记录进行快速调整时避免验证开销。如果你想要验证,只需使用
From the entry on
update_attribute
in the doc for ActiveRecord::Persistence:Seems like it's a loophole to help you avoid the overhead of validation when you make a quickie tweak to a record. If you want validation, just use