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?'方法
答案 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。希望这个答案能回答你的问题