Ruby 语法 '{:age.gt => 60}' ,它是如何工作的?

标签 ruby mongoid

我想知道这个语法 {: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/

相关文章:

ruby-on-rails - M Hartl 的 Ruby on Rails 教程第 5 章主页自定义标题

ruby - 访问 self.method_added 中的变量名

ruby - Mongoid 3.1.4 调用 'has_key?' 时未定义方法 'Document.create'

unit-testing - mongoid、rspec 和分配(:people) issue

linux - 增加 MongoDB 最大连接数

css - 如何使我的帖子内容保持在其 Bootstrap 范围内,或限制行长度?

ruby-on-rails - 通过一定数量的记录后清除内存

ruby-on-rails - 必须 to_json 以字符串形式返回一个 mongoid

ruby-on-rails - mongoid 中具有 embeds_many 关联的 first_or_create 方法

ruby-on-rails - 为什么是:if not being recognised by ActiveRecord validations?