我已将项目从ree-1.8.7升级到1.9.2p429。
我的设计模型中有一个名为silhouette_user_id的属性。在视图中,偶尔在我的ruby代码中,调用
current_user.silhouette_user_id
返回与
不同的(和错误的)值current_user[:silhouette_user_id]
返回正确的值。
虽然我可以搜索并替换以修复此问题,但我担心其他属性的行为方式会相同。这是一个大项目,我真的需要确定为什么会发生这种情况。
非常感谢任何想法。
答案 0 :(得分: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实例定义。