ruby-на-рельсах:update_attributes переопределяет проверки модели?
-
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])
Не связан с StackOverflow