簡體   English   中英

ruby-on-rails:update_attributes是否覆蓋模型驗證?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM