cbr*_*lak 0 ruby-on-rails update-attributes
我有一个典型的Post模型:
class Post< ActiveRecord::Base
validates_presence_of :user_id #Line 1
validates_presence_of :title,:body #Line 2
Run Code Online (Sandbox Code Playgroud)
在控制器中,我有:
def create
if request.post?
if login_required
@post = Post.new(params[:post]) #Line 3
@post .update_attribute("user_id",session[:userid]) #Line 4
Run Code Online (Sandbox Code Playgroud)
但是,如果第2行上的验证失败,仍将创建帖子,除非注释掉第4行.
1)为什么?
2)修复建议?
谢谢
从该条目update_attribute中的文档ActiveRecord的::持久性:
更新单个属性并保存记录,而无需通过正常的验证过程.这对现有记录上的布尔标志特别有用.
看起来像是一个漏洞,可以帮助您在对记录进行快速调整时避免验证的开销.如果您想要验证,请使用
@post.update_attributes(:user_id => session[:userid])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2655 次 |
| 最近记录: |