Ruby-on-rails: update_attributes تخطى عمليات التحقق من النماذج؟
-
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])
لا تنتمي إلى StackOverflow