0

メールヘルパーでアクセスしたいカスタムモジュールがありますが、それを含める方法がわかりません。

私のカスタムモジュールlib/workday.rb

module Workday
  def next_workday(date = Date.today)
    ...
  end
  ...
end

MailHelperで使用しようとしていること:

module MailHelper
  include Workday

  def next_workday(date = Date.today)
    Workday.next_workday(date)
  end
  ...
end

ヘルパーを使おうとすると、次のようになります。

undefined method `next_workday' for Workday:Module
/www/xxx/app/helpers/mail_helper.rb:4:in `next_workday'

モジュールをコンソールに手動で含めると、直接およびヘルパーを介して正常に機能します。

> include Workday
=> Object
> Workday.next_workday
=> Fri, 04 Jan 2013 
> helpers.next_workday
=> Fri, 04 Jan 2013
4

1 に答える 1

1

メソッドを含めると、Moduleインスタンスメソッドとしてアクセスできるようになります。next_workdayモジュールを介してメソッドに直接アクセスしようとする場合、メソッドは「クラスメソッド」として定義する必要があります(を使用self.)。

MailHelperを使用する場合は機能するはずです。

module MailHelper
  include Workday
end

とにかく委任するだけなので、でnext_workdayメソッドを定義する必要はありません。をクラスに含めると、次の方法でメソッドにアクセスできます。MailHelperWorkday#next_workdayMailHelpernext_workday

于 2013-01-03T13:46:59.990 に答える