0

我已按项目从 ree-1.8.7 升级到 1.9.2p429。

我的设计模型中有一个名为 silhouette_user_id 的属性。在视图中,偶尔在我的 ruby​​ 代码中,调用

current_user.silhouette_user_id

返回不同(和错误)的值

current_user[:silhouette_user_id]

它返回正确的值。

虽然我可以搜索和替换来解决这个问题,但我担心其他属性的行为方式相同。这是一个大型项目,我真的需要确定为什么会发生这种情况。

任何想法将不胜感激。

4

1 回答 1

0

我解决了这个问题。在升级期间,我试图更新我为 User 类定义新方法的方式。不幸的是,我做错了。我用了

  def define_new_method(key, value)
    self.class.send(:define_method, key.to_sym) do
       value
    end
  end

这实际上改变了 CLASS 用户的方法,而不是它所针对的实例。更改为:

  def define_new_method(key, value)
    define_singleton_method key.to_sym, lambda { value }
  end

导致只为预期的实例定义新方法,而不是为 current_user 实例定义新方法。

于 2013-08-01T04:47:36.183 回答