1

我试图在模型类中存储一个值,例如,几个复选框的值。

我想我可以将它们存储在类实例变量中,但是,当用户单击屏幕上的其他位置时,这些值会被清除。

如何维护我的类实例变量的值。

例如

class Person < ActiveRecord::Base

   def setAge(age)
      @@age = age

   def getAge
      return @@age

但是,看起来@@age 在设置后是空的。

4

2 回答 2

3

rails 框架重新加载development模式中的类。之前对类变量的请求中设置的任何值都会在新请求中丢失。如果您在该production模式下运行您的服务器,您的代码将工作。

您尝试做的是一种不好的做法,因为并发请求可能会覆盖状态,并且当您生成 Rails 服务器的多个实例时,此解决方案将不起作用(如 @iltempo 所述)

如果您尝试在两个客户端请求之间保持状态,则最好使用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 回答