لقد قدمنا تصحيحًا لمنع التسلسل العرضي لنماذج ActiveRecord دون تحديد الحقول المراد تسلسلها. يضمن هذا التغيير أننا نتحكم في الحقول التي يتم تضمينها، مما يتجنب المشكلات المحتملة مع البيانات غير المكتملة أو المفرطة التي يتم كشفها.
بشكل افتراضي، يتضمن عرض نموذج ActiveRecord بتنسيق JSON جميع السمات، وهو ما قد لا يكون مرغوبًا فيه في العديد من الحالات. لفرض ممارسات أفضل، نحتاج إلى تحديد الحقول التي يجب تسلسلها.
أمثلة الاستخدام
الاستخدام غير الصحيح:
def show
@user = User.first
render json: @user
end
في بيئة التطوير والاختبارات، سيؤدي هذا إلى:
ActiveRecordSerializationSafety::BlockedSerializationError:
لا يُسمح بتسلسل نماذج ActiveRecord (User) دون تحديد الحقول.
استخدم Serializer، أو مرر الخيار :only إلى #serializable_hash. مزيد من المعلومات: https://meta.discourse.org/t/-/314495
./lib/freedom_patches/active_record_disable_serialization.rb:15:in `serializable_hash'
الاستخدام الصحيح:
- استخدام Serializer
class UserSerializer < ApplicationSerializer
attributes :id, :email
end
def show
@user = User.first
render json: @user, serializer: UserSerializer
end
- استخدام الخيار
:only
def show
@user = User.first
render json: @user.as_json(only: [:id, :email])
end
هذه الوثيقة تخضع للتحكم في الإصدار - اقترح تغييرات على github.