我想知道这个语法 {:age.gt => 60}
,我从 mongoid
中找到了这个语法。它是如何工作的?我正在检查 mongoid 的源代码,它没有太多扩展 Symbol
类,并且有一个 matchers
目录,其中包含 gt.rb,lt.rb, ....这些文件用于条件逻辑:大于,小于......我不明白它与 Symbol
类有什么关系。
在普通的 irb session 中,它显示错误:
NoMethodError: undefined method `gt' for :age:Symbol
谁能给我解释一下?
最佳答案
这由 mongoid 本身作为 Mongoid::Criterion::Complex
的一部分在 this symbol inflections file 中完成。 .奇怪的是,这个文件不再存在于 master 分支中,但我在我的项目中使用 2.4.7 并且它存在于那里(它可能只是移动了但我在 master 中找不到它)。
非常有趣的魔法。魔术 我不认为所有这些都是必要的,:field => { :$gt => 5 }
对我来说看起来很好,但无论如何 :)
关于Ruby 语法 '{:age.gt => 60}' ,它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10768274/