Rails类属性(attr_accessor)根本没有使用Ruby 2.1.4进行更改

时间:2014-11-04 20:05:47

标签: ruby-on-rails ruby ruby-on-rails-3.2 ruby-2.1

我有一个Session类来存储当前登录的用户。它是这样的:

class Session
  attr_reader :user, :ip, :gef
  attr_accessor :branchid

  def initialize(user, ip, gef=nil)
    (...)
  end

  (...)

end

然后我有一个控制器方法来改变这个branchid,所以用户可以访问不同的东西。 logged_user是一个Session类,它被设置为ApplicationController上的辅助方法:

class ApplicationController < ActionController::Base

  helper_method :logged_user

  (...)

  def some_method_that_sets_logged_user_before_calling_change_branch
    self.logged_user = Session.new params[:user], params[:ip]
  end

  def change_branch
    logged_user.branchid = params[:branchid]
    redirect_to root_path
  end
end

当我使用Ruby 1.9.3和Rails 3.2时,这非常有效。我现在正在将Ruby升级到2.1.4,这似乎已经停止了。我在change_branch方法的中间放了一个byebug来查看发生了什么,并且尝试直接通过控制台改变logged_user根本不起作用。

当我键入(在服务器控制台中,在调试时)

self.logged_user.branchid = 31

然后致电

self.logged_user.branchid

它将返回旧值,而不是31。

Ruby 2.0或2.1中的任何内容都发生了变化,因此不再适用吗?

0 个答案:

没有答案