2012-01-23 12 views
1

Rails 3.1の名前空間に問題があります。私はクラスを持っています、それをaと呼んでみましょう。レールのモデル名前空間の問題

#/app/models/a.rb 
class a 
    #some methods 
    def self.method_from_a 
    #does things 
    end 
end 

しかし、別の名前空間に同じ名前の別のクラスもあります。私が得るのに

#/app/models/b/a.rb 
class b::a 
    def method 
    return a.method_from_a 
    end 
end 

私はBを呼び出す:: a.method:

NameError: uninitialized constant b::a::a 

は、私はそれが簡単なソリューションであると確信して、私はちょうどそれをしないのです。 ::

答えて

3

プレフィックスa

class b::a 
    def method 
    return ::a.method_from_a 
    end 
end 

この(すなわちスコープオペレータ)もhere説明する:

定数クラスまたはモジュール内で定義を どこ内簡素アクセスすることができます。クラスまたはモジュール。クラスまたはモジュールの外側では、 には、スコープ演算子::'' prefixed by an expression that returns the appropriate class or module object. Constants defined outside any class or module may be accessed unadorned or by using the scope operator :: ''を接頭辞なしで使用してアクセスできます。

ところで、Rubyのクラス名は大文字で始める必要があります。

+0

ありがとうございました。私は単純なものを見逃していたことを知っていました。 – Red

関連する問題