Ruby-on-rails: update_attributes تخطى عمليات التحقق من النماذج؟

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

  •  21-09-2019
  •  | 
  •  

سؤال

لدي نموذج نموذج نموذجي:

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 في Doc for ActivereCord :: المثابرة:

يقوم بتحديث سمة واحدة ويحفظ السجل دون المرور من خلال إجراء التحقق العادي. هذا مفيد بشكل خاص للأعلام المنطقية على السجلات الحالية.

يبدو أنه ثغرة لمساعدتك على تجنب النفقات العامة للتحقق من الصحة عند قيامك بتعديل سريع إلى سجل. إذا كنت تريد التحقق من الصحة ، فقط استخدم

@post.update_attributes(:user_id => session[:userid])
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top