2012-03-11 16 views
1

モデルクラスに値を格納しようとしています(例えば、2つのチェックボックスの値)。ActiveRecord(Ruby On Rails)のクラスインスタンス変数

私はそれらをクラスインスタンス変数に格納できると考えましたが、ユーザが画面上の他の場所をクリックするとこれらの値はクリアされます。

クラスインスタンス変数の値をどのように維持できますか。

class Person < ActiveRecord::Base 

    def setAge(age) 
     @@age = age 

    def getAge 
     return @@age 

については

は、しかし、それが設定された後に@@年齢が空であるように見えます。

+0

このコードは間違いなくあなたがトラブルに取得している場合は、どのように我々は知っているRubyのではないでしょうか? –

+1

@NashBridgesは構文的にニュートンのコードは有効なRubyコードです。なぜあなたはそうではないと思いますか? –

+0

@KandadaBogguでも...編集してもまだ... Python :) –

答えて

3

レールフレームワークは、developmentモードでクラスをリロードします。クラス変数への以前の要求で設定された値は、新しい要求で失われます。サーバーをproductionモードで実行すると、コードが機能します。

何をしようとしていること(@iltempoで述べたように)あなたがいる場合

同時要求が状態を上書きすることができ、あなたのレールServerの複数のインスタンスを起動するとき、このソリューションが動作しませんように悪い習慣があります2つのクライアント要求に渡って状態を維持しようとすると、session変数を使用するほうがよいでしょう。

要求1

session[:age] = params['age'] 

要求2

u = User.new 
u.age = session[:age] 
1

@nashはRubyコードではありません。

ただし、クラスレベルでデータを保存すると、現在のプロセスでのみ有効です。つまり、乗客や他のWebサーバーのような複数のプロセスを実行すると、これらのプロセス間でデータが共有されません。

また、年齢は、クラスではなくPersonインスタンスに関連していると考えられます。