所以,我在Rails 2.3.11中有几个模型:
class RememberToken < ActiveRecord::Base
belongs_to :user
...
end
class User < ActiveRecord::Base
has_many :remember_tokens
...
end
在控制器中,我这样做:
tok = RememberToken.find_by_token(token_str)
if tok
u = tok.user
...
end
当我去做某事时,事实证明它是ActiveRecord::Associations::BelongsToAssociation
的一个实例,而不是ActiveRecord::Base
。
当我将代码更改为:
时u = User.find(tok.user_id)
一切顺利。但这不是Rails-land中的最佳实践。
更令人沮丧的是,第一个示例仅在我的控制器中失败 - 在脚本/控制台中执行相同操作正常。
我怀疑当我们将Rails从2.3.8升级到2.3.11时就开始了这种行为,但很难确定。
我对这种行为感到困惑 - 有什么建议吗?