代码之家  ›  专栏  ›  技术社区  ›  user62605

Rails:检索到的对象没有属性,与real不可比较

  •  0
  • user62605  · 技术社区  · 17 年前

    这个问题真的让我不知所措。

    我有一个可注释的模型:weburl。

    网址1….*评论 注释*.1用户

    我遇到的问题是不可测试的(我的测试都通过了),也不是一直都在发生。通常在我第二次生成相同的控制器操作时发生。

    (comment.user.login == current_user.login == User.find(1).login)
         ==> True
    (comment.user.id)
         ==> Unknown in the current context
    (comment.user.class == User == current_user.class)
         ==> True 
    

    我仔细检查了两人的关系 belongs_to has_one has_many 在我的模型中

    我想这和缓存有关,我在我的开发环境中遇到过这种情况,但在我的自动化测试和生产中都没有。

    编辑 添加我的开发.rb初始化文件

    config.cache_classes = false                                    #Set to true for prod
    config.whiny_nils = true
    config.action_controller.consider_all_requests_local = true     #Set to false for prod
    config.action_view.debug_rjs                         = true
    config.action_controller.perform_caching             = false    #Set to true for prod
    

    编辑#2 如果config.cache\u类是真的,错误没有发生

    Doc说:#在开发环境中,每个请求都会重新加载应用程序的代码。这会减慢响应时间,但非常适合开发,因为在更改代码时不必重新启动web服务器。

    http://dev.rubyonrails.org/ticket/10722 另外,Mongrel和WebRick也会出现问题。

    3 回复  |  直到 17 年前
        1
  •  1
  •   Lolindrath    17 年前

    我想你的问题的意思是:为什么这个不起作用: comment.user == current_user .

    当你比较两个Ruby对象时,即。 注释.user==当前用户 你在比较它们的引用,因为它们是两个独特的对象,位于不同的内存区域,这是正确的行为。

        2
  •  0
  •   Srdjan Pejic    17 年前

    这里到底抛出了什么错误:(注释.user.id)? 如果您不能从Comment对象访问User对象,那么您可能会丢失模型中的某些内容。不过,我还没有接近一个控制台来验证这一点

        3
  •  0
  •   tillmo    13 年前

    我遇到了一个类似的问题,并通过转储和重新读取数据库来解决它。

    推荐文章