متغيرات مثيل الفئة في أكتيفريكورد (روبي على القضبان)
-
11-12-2019 - |
سؤال
أحاول تخزين قيمة في فئة نموذج ، على سبيل المثال ، قيم اثنين من مربعات الاختيار.
اعتقدت أنه يمكنني تخزينها في متغير مثيل فئة ، ومع ذلك ، يتم مسح هذه القيم عندما ينقر المستخدم في مكان آخر على الشاشة.
كيف يمكنني الحفاظ على قيم متغيرات مثيل الفصل.
على سبيل المثال
class Person < ActiveRecord::Base
def setAge(age)
@@age = age
def getAge
return @@age
ومع ذلك ، يبدو أن العمر فارغ بعد تعيينه.
المحلول
إطار القضبان يعيد تحميل الطبقات في development
الوضع.يتم فقد أي قيم تم تعيينها في الطلبات السابقة لمتغير الفئة في طلب جديد.إذا قمت بتشغيل الخادم الخاص بك في production
الوضع ، سوف تعمل التعليمات البرمجية الخاصة بك.
ما تحاول القيام به هو ممارسة سيئة كما يمكن للطلبات المتزامنة الكتابة فوق الدولة وعندما تفرخ مثيلات متعددة من خادم القضبان الخاص بك هذا الحل لن يعمل (كما ذكر من قبل إلتيمبو)
إذا كنت تحاول أن تستمر الدولة عبر طلبين العميل ، كنت أفضل حالا باستخدام session
المتغيرات.
طلب 1
session[:age] = params['age']
الطلب 2
u = User.new
u.age = session[:age]
نصائح أخرى
كما ذكر nash هذا ليس رمز روبي هنا.
ولكن إذا قمت بتخزين البيانات على مستوى الفصل، فهي صالحة فقط للعملية الحالية.هذا يعني أنه إذا قمت بتشغيل عمليات متعددة مثل الركاب، فلن يتم تقاسم بيانات خوادم الويب الأخرى بين هذه العمليات.
أيضا العمر الأصوات المراد أن تكون مرتبطة بمثيل شخص بدلا من الفصل.