• 贴一下具体的代码吧。 定义这个方法的地方以及调用这个方法的地方。

    1. 就是上面你使用的,查询数据库的时候,可以直接传数组,没必要一条一条查。
    2. 分页可以直接用数据库做,不要全部查出来再分页吧。 比如下面的语句
    "SELECT  `users`.* FROM `users` LIMIT 20 OFFSET 0"
    
  • 如果你贴的是源代码,那应该是你的 congtroller 里的代码里有空格。

  • 哈哈,我都能想象到当时的场景,这个确实是很容易搞错。辛苦了。 “我们最后确认一遍信息吧,地址好像有点不对,是不是省略了几个字?”。一查地图,我擦。

  • 我这里都可以,不会报错,不知道你是怎么使用的。

  • 说得过去的,思路和我上面说的一样,你思考一个问题,在irb中,当前的作用域是什么?define_singleton_methon 时,这个do block可以访问的作用域是什么?我能告诉你的是,和上面的情况是一样的,他们在同一个作用域。基本上@laplace已经指出了问题了。文字比较生硬,可以忽略大家的语气。不用在意。

  • 实际上,你搞混了一个东西。当 hello 是 字符串与 def hello; end 是完全两个不同的东西。 我认为你指的 hello 是这个意思。

    class A
      hello = "test"
    
      def hello_again
      end
    
      B = Class.new do
        define_singleton_method :hi do
          hello
        end
      end
    
    end
    
    class C < A
      def say_hi
        B.hi
      end
    end
    

    基于这个假设。我讲一下为什么字符串hello 可以被访问到。

    因为解释器在读取这段代码时,当读到define_singleton_method ,此时do block 是可以访问当前的作用域的。 那么当前的作用域到底是什么?并不是class A内部的作用域,而是,正在定义class A的作用域,也可以理解为 Class.new do ; end 这个作用域。 本来,如果你没有在 B.hi 中使用 hello 的话,这个hello 在加载完这段代码后 hello 这个变量就释放了(有可能有理解的错误),因为除了在定义 A 的代码里用了一下,其他地方就再也没有绑定过这个变量了,但是你定义了 B.hi ,把这个变量又和 B.hi 绑定到一起了。所以 hello 这个变量没有被释放掉。

    上面解释了为什么字符串hello可以被访问。

    上面的这些东西在The Ruby Programming Language 这本书里有讲到过。可以看一下。

  • 用这个按摩,非常酸爽。rumbler roller

  • 感觉只能考虑增加字段了,上面说的增加层数,以及每一个node不只是保存parent id 而是保存整个 ancestor 链的 id ,

  • 不在同一个文件夹的话,它就不知道这个文件在哪里啊,所以肯定找不到的。不是在irb里面执行ruby