محمد بوسكوري نشر 9 يناير 2016 أرسل تقرير نشر 9 يناير 2016 (معدل) لدي الكود التالي على إطار العمل Rails:class User < ActiveRecord::Base after_create :set_user_full_name ......... private def set_user_full_name self.name = "Test name" end endلكن عند إنشائي مستخدم user أحصل على name بقسمة null, وَ عند محاولتي تحديث هذه الخاصية، بالطريقة التالية:devise_parameter_sanitizer.for(:sign_up) << [:name] devise_parameter_sanitizer.for(:account_update) << [:name]لكن لا أتوصل لذلك، فهل من حل للمشكل؟ تم التعديل في 9 يناير 2016 بواسطة محمد بوسكوري اقتباس
0 E.Nourddine نشر 11 يناير 2016 أرسل تقرير نشر 11 يناير 2016 لتوضيح المفهوم فـ after_create تعمل بعد حدث إدخال بيانات إلى قاعدة البيانات.و في كود الحقل name لم يتم تخزينه بعد:user = User.create(some_attiributes) user.name #=> "Test name" user.reload user.name #=> nilمما يحتم إعطاءه القيمة في حال أردت إدخال قيمة name في قاعدة البيانات استعمل before_create والتي تعمل عكس الوظيفة السابقة أي قبل عملية التخزين في db.مثال، لنفترض وجود حقلين first_name و last_name:before_create :set_user_full_name def set_user_full_name self.name = "#{first_name} #{last_name}" endكحالة من الممكن الوقوع فيها، وهي عدم توفر المستخدم على قيم لـ fisrt_name و last_name، يمكننا استخدام الكود التالي لتفادي أي نوع من رفع excepton من خلال المتحكم Controller:class Users::RegistrationsController < Devise::RegistrationsController before_filter :set_name_param, only: [:create] private def set_name_param params[:user][:name] = "#{params[:user][:first_name]} #{params[:user][:last_name]}" end end اقتباس
السؤال
محمد بوسكوري
لدي الكود التالي على إطار العمل Rails:
لكن عند إنشائي مستخدم user أحصل على name بقسمة null, وَ عند محاولتي تحديث هذه الخاصية، بالطريقة التالية:
لكن لا أتوصل لذلك، فهل من حل للمشكل؟
تم التعديل في بواسطة محمد بوسكوري1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.