Переменные экземпляра класса в ActiveRecord (Ruby On Rails) - PullRequest
1 голос
/ 11 марта 2012

Я пытаюсь сохранить значение в классе модели, например, значения пары флажков.

Я подумал, что могу сохранить их в переменной экземпляра класса, однако эти значения очищаются, когда пользователь щелкает в другом месте экрана.

Как мне сохранить значения переменных экземпляра моего класса.

Например

class Person < ActiveRecord::Base

   def setAge(age)
      @@age = age

   def getAge
      return @@age

однако, похоже, что @@ age пусто после его установки.

Ответы [ 2 ]

3 голосов
/ 11 марта 2012

Платформа rails перезагружает классы в режиме development. Любые значения, установленные в предыдущих запросах к переменной класса, теряются в новом запросе. Если вы запустите сервер в режиме production, ваш код будет работать.

То, что вы пытаетесь сделать, является плохой практикой, так как одновременные запросы могут перезаписывать состояние, и когда вы порождаете несколько экземпляров вашего сервера rails, это решение не будет работать (как упомянуто @iltempo)

Если вы пытаетесь сохранить состояние в двух клиентских запросах, лучше использовать session переменные.

запрос 1

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

запрос 2

u = User.new
u.age = session[:age]
1 голос
/ 11 марта 2012

Как упомянул @nash, это не код Ruby.

Однако, если вы храните данные на уровне класса, они действительны только для текущего процесса. Это означает, что при запуске нескольких процессов, таких как пассажирские и другие веб-серверы, данные не будут совместно использоваться этими процессами.

Также age звучит как относящийся к экземпляру Person, а не к классу.

...