如何使用'include?'方法类Mongoid :: Criteria?

时间:2014-02-07 11:51:55

标签: ruby-on-rails ruby mongoid

Mongoid::Criteria的班级文件没有提及有关方法'include?'的任何内容。我认为它应该像Array.include?,但事实并非如此。

这是一个显示数组如何工作的例子。

months = ['January', 'February', 'March']
months.include? 'January' #=> true
months.include? 'Jan'     #=> false

对于具有字段month(String),created_at,updated_at的集合模型Month。但是,Month.where(month: /a/).include? 'January''Jan'始终返回false。

是否有与Array.include相同的方法?对于Mongoid ?,以及如何使用这个'include?'方法

1 个答案:

答案 0 :(得分:3)

Array.include?(element)在mongoid中运行得很好。

运行User.all时,它返回mongoid标准。虽然include包含在数组上。用户to_a或类似Story.all.entries的条目将其更改为数组。

User.all.to_a.include?(User.first)

会给出真实的。

在你的qsn更新后,我会尝试解释它。

Month.where(month: /a/)

这会返回一个mongoid标准。现在

Month.where(month: /a/).include? or Month.where(month: /a/).entries.include?

期望一个对象与而不是字符串进行比较。就好像这个查询将几个月作为对象返回,现在你执行

Month.where(month: /a/).include?(month_obj)
如果month_obj包含包含"a"的文本的月份,则

将为true。希望这个答案能回答你的问题