1

モデルクラスに値を格納しようとしています。たとえば、いくつかのチェックボックスの値です。

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

クラスインスタンス変数の値を維持するにはどうすればよいですか。

例えば

class Person < ActiveRecord::Base

   def setAge(age)
      @@age = age

   def getAge
      return @@age

ただし、設定後の@@ageは空のようです。

4

2 に答える 2

3

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

同時リクエストが状態を上書きする可能性があり、Railsサーバーの複数のインスタンスを生成すると、このソリューションは機能しないため、実行しようとしていることは悪い習慣です(@iltempoで言及されているように)

2つのクライアント要求間で状態を永続化しようとしている場合は、session変数を使用することをお勧めします。

リクエスト1

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

リクエスト2

u = User.new
u.age = session[:age]
于 2012-03-11T17:32:07.350 に答える
1

@nashが述べたように、これはここではRubyコードではありません。

ただし、データをクラスレベルで保存する場合は、現在のプロセスに対してのみ有効です。つまり、パッセンジャーや他のWebサーバーなどの複数のプロセスを実行すると、これらのプロセス間でデータが共有されなくなります。

また、年齢はクラスではなくPersonインスタンスに関連しているように聞こえます。

于 2012-03-11T15:31:16.090 に答える