1

私は使用しています:

  • ルビー1.9.2
  • レール 3.1.10

これは私のコードです:

class Report::ExpectedHour

  def initialize(user, options = {})
    @user       = user
    @date_start = options[:start]
    @date_end   = options[:end]
  end

  def expected_hours_range
    previous    = ExpectedHour.previous_dates(@user, @date_start).first
    hours_range = ExpectedHour.between_dates(@user, @date_start, @date_end)

    unless hours_range.include?(previous)
      hours_range << previous
    end

    hours_range
  end

end

インスタンスから呼び出すたびexpected_hours_rangeに、次のエラーが発生します。

NameError: uninitialized constant Report::ExpectedHour::ExpectedHour
from /home/edelpero/.rvm/gems/ruby-1.9.2-p180@titi/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in `const_missing_from_s3_library'
from /opt/lampp/htdocs/titi/app/models/report/expected_hour.rb:10:in `expected_hours_range'

実際に存在する ActiveRecord クラスをReport::ExpectedHour::ExpectedHour呼び出しているため、なぜ呼び出されるのかわかりません。ExpectedHourまたReport::ExpectedHour::ExpectedHour、存在しません。

4

1 に答える 1

2

クラス メソッド内でクラスを呼び出す場合、Ruby はそれがクラス自体内にネストされたクラスであるか、定数であると想定します。これを試して:

class MyClass
  def some_method
    use_external_class = ::ExternalClass::CONSTANTB.bla
    # Use the '::'
  end
end
于 2013-02-13T14:14:23.630 に答える