محمد بوسكوري نشر 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 بواسطة محمد بوسكوري اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
محمد بوسكوري
لدي الكود التالي على إطار العمل Rails:
لكن عند إنشائي مستخدم user أحصل على name بقسمة null, وَ عند محاولتي تحديث هذه الخاصية، بالطريقة التالية:
لكن لا أتوصل لذلك، فهل من حل للمشكل؟
تم التعديل في بواسطة محمد بوسكوريرابط هذا التعليق
شارك على الشبكات الإجتماعية
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.