1

個人指導セッションのモデルには、リマインダー テキストをさまざまなタイミングでトリガーするコードがあります。リファクタリングを試みるまではすべて正常に機能していましたが、現在問題が発生しています。

def send_reminder_text(texts_batch)
    texts_batch.each do |text|
        page_number = Refugee.find(text.refugee_id)[:last_page]
        body_of_text = text[:begin_time].in_time_zone.strftime("Burma Reminder: upcoming session at %I:%M%p beginning on page #{page_number}. 
            Please email jek2141@columbia.edu to reschedule or cancel the session.") 
        text.begin_text(body_of_text)
    end
end

def self.deliver_pm_reminder_text
    texts_batch = TutoringSession.batch_for_pm_reminder_text
    send_reminder_text(texts_batch)
end

def self.deliver_just_before_reminder_text
    texts_batch = TutoringSession.batch_for_just_before_reminder_text
    send_reminder_text(texts_batch)
end

関数を呼び出すとdeliver_just_before_reminder_text、次のエラー メッセージが表示されます。

irb(main):006:0> TutoringSession.send_reminder_text
NoMethodError: undefined method `send_reminder_text' for #<Class:0x00000003cfe5d8>
    from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.1.1/lib/active_record   /base.rb:1088:in `method_missing'
from (irb):6
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.1.1/lib/rails/commands/console.rb:45:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.1.1/lib/rails/commands/console.rb:8:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.1.1/lib/rails/commands.rb:40:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

これは、上でsend_reminder_text明確に定義されているにもかかわらずです。

4

1 に答える 1

3

メソッド宣言は、メソッドがTutoringSessionクラスのオブジェクト上にあることを指定します。

def send_reminder_text(texts_batch)

しかし、クラス自体のメソッドであるかのように呼び出そうとしています。

irb(main):006:0> TutoringSession.send_reminder_text

定義を次のように変更してみてください。

def self.send_reminder_text(texts_batch)
于 2012-06-19T01:06:56.453 に答える