Вопрос жизненного цикла переменной приложения Rails - PullRequest
2 голосов
/ 12 июля 2010

Предположим, что у меня есть глобальная переменная user в приложении .... как это:

  # GET /users.xml
  def index
    @users = User.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @users }
    end
  end    

Это означает, что при каждом запросе создается новый @user? Если при каждом запросе создается объект, когда он будет уничтожен? Кроме того, если vistorA перейти на веб-сайт, создается @userA, а vistorB перейти на веб-сайт @userB. Будет ли у vistorA шанс получить объект vistorB (@userB)? Кроме того, когда объект будет выпущен? Спасибо.

**** Обновление: @users - это не глобальная переменная, а переменная экземпляра. Итак, вопрос для продолжения. Как сервер узнает, какой @user принадлежит к какому запросу? Спасибо.

Ответы [ 2 ]

5 голосов
/ 12 июля 2010

@users не является глобальной переменной, это переменная экземпляра . Для обработки каждого запроса создается новый экземпляр вашего контроллера, поэтому @users для посетителя A и посетителя B независимы.

1 голос
/ 12 июля 2010

1] @users не является глобальной переменной, это переменная экземпляра. Ее область действия остается только в этом методе.

 def index
    @some_variable= "Hello"
    other_method
    redirect_to :action=>'redirect_method'
  end

  def other_method
    #here you get @some_variable ="Hello" as you called this method in index where variable is initialise
  end

  def redirect_method
   #here you get @some_variable as you not called this method in index but redirected to this method
  end

2] для каждого пользователя @users будет отличаться, так как каждый запрос обрабатывается сервером независимо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...