سؤال

أحاول استخدام المراقبين في تطبيق Rails الخاص بي لإنشاء إدخال جديد في نموذج "الأحداث" في كل مرة يتم فيها حفظ "تعليق" جديد. التعليقات تنقذ بشكل جيد ، لكن المراقب لا ينشئ الأحداث بشكل صحيح.

// comment_observer.rb
class CommentObserver < ActiveRecord::Observer
  observe :comment

  def after_save(comment)
    event = comment.user.events.create
    event.kind = "comment"
    event.data = { "comment_message" => "#{comment.message}" }
    event.save!
  end

يعمل هذا المراقب بشكل رائع ، أستخدمه في وحدة التحكم ولكن لا يبدو أنه يلاحظ بشكل صحيح ؛ عندما أجرب تطبيقي ، لا يبدو أنه يخلق أحداثًا. لا أرى أخطاء أو أي شيء.

و انا ايضا لدي config.active_record.observers = :comment_observer في ملف البيئة.

هل أنا على خطأ؟ هل يجب أن أتبع نهجًا مختلفًا؟

هل كانت مفيدة؟

المحلول

يجب ألا تحتاج إلى رصد بيان منذ أن تم تسمية صفك CommentObserver.

حاول تركها.

او جرب:

observe Comment

بدلاً من

observe :comment

نصائح أخرى

في الواقع ، أنت بحاجة observe :comment فقط إذا كان لا يمكن استنتاج فئة التعليق من اسم المراقب (أي ، لا يسمى CommentObserver).

هل أعلنت مراقبك في التطبيق. rb:

# Activate observers that should always be running
config.active_record.observers = :comment_observer
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top