2012-03-28 20 views
7

Railsのクラス名に数値を含めることはできますか?例:クラス名に数字があるRailsルビファイルの名前はどのようにして指定しますか?

class Test123 
end 

これは有効なクラスですか?私は、クラスをロードしようとするとuninitialized constant Test123エラーが発生します。

+13

は、なぜあなたはしないでくださいそれを見て? –

+0

「未初期化定数Test123」。それはそれが有効でないことを意味しますか? @minitechはそれがそうであると言います。 –

+0

@ArtemKalinchuk:そのエラーを生成する正確なコードを表示できますか? – Ryan

答えて

39

Artem Kalinchukの最後のコメントはこの誤った質問の答えに値すると思います。

Rubyクラス名には数字を使用できます。

Railsクラスは、正しく名前付きファイルで定義する必要があります。 NewYear2012Controllerというクラスを定義する場合は、 "new_year_2012_controller.rb"の代わりにnew_year2012_controller.rbファイルに定義する必要があります。

これは、Railsのインフレクトと自動ロードがどのように機能するかを示しています。私がこのことを知っていない

7

はい、Ruby class names may contain numbersです。しかし、Rubyのすべての識別子と同様に、they may not begin with numbers

Reference

識別子

例:

foobar ruby_is_simple 

Rubyの識別子は、アルファベットの 桁、および下線文字で構成されている、を含む( アルファベットで始まりますアンダースコア)。 のRuby識別子の長さに制限はありません。

0

...

は、以下の

class Ab123 
    def initialize(y) 
    @z = y 
    end 
end 

class AbCde 
    def initialize(y) 
    @z = y 
    end 
end 

と、次のインスタンスを参照してください。

Ab123.new x 

または

AbCde.new x 

のみ後者AbCde.new xは正しくインスタンス化されます。

1

てみてくださいこれを行うには:

  • として、ここでtable_nameの魔法

を追加するには、モデルとmodel.rbファイル

  • の名前を変更します。

    class TwoProduct < ActiveRecord::Base 
        self.table_name = '2_products' 
    end 
    
  • 関連する問題