【发布时间】:2016-01-12 11:57:08
【问题描述】:
我有这样的设置模型数据
[52] pry(main)> Setting.all.to_a
=> [#<Setting _id: 561cc75b25917fdc2300003c, courses: ["521c4578ef8b6038ba000069", "55f909c825917f1ac000003e"], user_id: "55f908d725917f5157000036">,
#<Setting _id: 563b322425917f8117000025, courses: ["561cddbb25917fa26e0000b9", "5614e62225917fbb1300005f", "5617a6bd25917f7aa100005d", "560ca6b325917f158d000002", "5617a5f325917ff38c000036", "5632eebc25917f1ace000038", "55f909c825917f1ac000003e", "521c4578ef8b6038ba000069"], user_id: "56125d7b25917fb8c0000001">,
#<Setting _id: 5641d3b125917fa02f000009, courses: ["5614e62225917fbb1300005f", "55f909c825917f1ac000003e", "521c4578ef8b6038ba000069"], user_id: "5264b629ef8b604f96000001">,
#<Setting _id: 565d541925917f10da000013, courses: ["561cddbb25917fa26e0000b9", "5614e62225917fbb1300005f", "5617a6bd25917f7aa100005d", "5617a5f325917ff38c000036", "560ca6b325917f158d000002", "55f909c825917f1ac000003e", "5632eebc25917f1ace000038", "521c4578ef8b6038ba000069"], user_id: "565d53f525917f10da000012">]
现在我想要一组具有特定课程的设置
pry(main)> course = Course.find("5614e62225917fbb1300005f")
pry(main)> Setting.any_of(courses: course.id).to_a
=> [#<Setting _id: 565d541925917f10da000013, courses: ["561cddbb25917fa26e0000b9", "5614e62225917fbb1300005f", "5617a6bd25917f7aa100005d", "5617a5f325917ff38c000036", "560ca6b325917f158d000002", "55f909c825917f1ac000003e", "5632eebc25917f1ace000038", "521c4578ef8b6038ba000069"], user_id: "565d53f525917f10da000012">]
它只产生了一个不是预期结果的数组元素,然后
[53] pry(main)> Setting.any_of(courses: course.id.to_s).to_a
=> [#<Setting _id: 563b322425917f8117000025, courses: ["561cddbb25917fa26e0000b9", "5614e62225917fbb1300005f", "5617a6bd25917f7aa100005d", "560ca6b325917f158d000002", "5617a5f325917ff38c000036", "5632eebc25917f1ace000038", "55f909c825917f1ac000003e", "521c4578ef8b6038ba000069"], user_id: "56125d7b25917fb8c0000001">,
#<Setting _id: 5641d3b125917fa02f000009, courses: ["5614e62225917fbb1300005f", "55f909c825917f1ac000003e", "521c4578ef8b6038ba000069"], user_id: "5264b629ef8b604f96000001">]
产生两个数组元素,但期望的结果是三个数组元素,可以通过将这两个结果相加或通过以下语法来获得
[57] pry(main)> Setting.any_of({courses: course.id.to_s}, {courses: course.id}).to_a
=> [#<Setting _id: 563b322425917f8117000025, courses: ["561cddbb25917fa26e0000b9", "5614e62225917fbb1300005f", "5617a6bd25917f7aa100005d", "560ca6b325917f158d000002", "5617a5f325917ff38c000036", "5632eebc25917f1ace000038", "55f909c825917f1ac000003e", "521c4578ef8b6038ba000069"], user_id: "56125d7b25917fb8c0000001">,
#<Setting _id: 5641d3b125917fa02f000009, courses: ["5614e62225917fbb1300005f", "55f909c825917f1ac000003e", "521c4578ef8b6038ba000069"], user_id: "5264b629ef8b604f96000001">,
#<Setting _id: 565d541925917f10da000013, courses: ["561cddbb25917fa26e0000b9", "5614e62225917fbb1300005f", "5617a6bd25917f7aa100005d", "5617a5f325917ff38c000036", "560ca6b325917f158d000002", "55f909c825917f1ac000003e", "5632eebc25917f1ace000038", "521c4578ef8b6038ba000069"], user_id: "565d53f525917f10da000012">]
我的困惑是为什么
Setting.any_of(courses: course.id).to_a
和
Setting.any_of(courses: course.id.to_s).to_a
产生不同的结果,我的第三种语法方法是获得我想要的结果的唯一正确方法吗?
【问题讨论】:
标签: ruby-on-rails arrays ruby mongoid