ruby-на-рельсах:update_attributes переопределяет проверки модели?

StackOverflow https://stackoverflow.com/questions/2474729

  •  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) Предложения по исправлению?

Спасибо

Это было полезно?

Решение

Из записи на update_attribute в документ для ActiveRecord::Постоянство:

Обновляет один атрибут и сохраняет запись без прохождения обычной процедуры проверки.Это особенно полезно для логических флагов в существующих записях.

Похоже, что это лазейка, которая поможет вам избежать накладных расходов на проверку при быстрой настройке записи.Если вам нужна проверка, просто используйте

@post.update_attributes(:user_id => session[:userid])
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top