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

对于sequel model attribute(db column),instance.attribute\u name和instance[:attribute\u name]是否完全相同?

  •  0
  • okliv  · 技术社区  · 6 年前

    我使用Rails(5.1.4)+Sequel(5.9.0)gem+PostgreSQL+Rack Mini Profiler(最新)+Sequel Rails(1.0.1)

    我试着找出我的应用程序速度慢的原因,现在我发现:

    我做了一个简单的查询来获取帖子 @posts = Post.all (大约150个)

    我有一部分要渲染(简化):

    <% @posts.each do |post| %>
      <%= post.title %>
      <%= post.body %>
    <% end %>
    

    现在,如果我看一下InfoRack Mini Profiler的日志,我会发现一些奇怪的

    SELECT NULL; 
    

    请求减慢呈现速度,但如果我更改 . 方法到 :[]

    <% @posts.each do |post| %>
      <%= post[:title] %>
      <%= post[:body] %>
    <% end %>
    

    那个 NULL 查询消失,渲染变得更快(两者 title body 只是我数据库里的字段,没有别的)

    为什么?这是我需要知道的事情吗 sequel 宝石和我不用 instance.method 在未来的情况下,还是我遗漏了什么?

    小精灵

    如果我尝试从控制台请求,我将收到以下消息:

    > Post.first
    D, [2018-06-09T22:46:41.277269 #96772] DEBUG -- : (0.001008s) SELECT NULL
    D, [2018-06-09T22:46:41.277952 #96772] DEBUG -- : (0.000362s) SELECT * FROM "posts" LIMIT 1
    

    第一个奇怪的幻影请求是什么?如何调试和粉碎它?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   okliv    6 年前

    最后,我发现了问题:

    这是一个 :connection_validator plugin

    不要使用这个插件,除非你真的需要它!