gpt4 book ai didi

ruby-on-rails - 带有 AND 和 OR 的 Mongoid 3 复杂查询

转载 作者:行者123 更新时间:2023-12-03 18:26:46 24 4
gpt4 key购买 nike

我有一个 Rails 3.2 博客应用程序,它根据用户的公司和地区向用户显示帖子。我还想显示用户是帖子作者的帖子,即使它是为另一个公司或地区创建的(Post 对象有一个地区和一个公司,以及 User 对象)。

我在 MySQL 中用查询做了类似的事情:

SELECT * FROM Post WHERE approved = true AND hold = false AND 
((company_id IN (null, 'user_company_id') AND region IN (null, 'user_region_id'))
OR author = 'user_id') ORDER BY published_date;

我们现在正在使用 Mongoid gem 将应用程序迁移到 MongoDB,这是我无法弄清楚的最后一个查询。这是我到目前为止使用 Origin 和 Selector 的组合来调用文档的内容:
@posts = Post.and(
{approved: true},
{hold_publish: false},
{"$or" => [
{"$and" => [{:company_id.in => [nil, @user.company.id]}, {:region_id.in => [nil, @user.region.id]}]},{user_id: @user.id}
]}).desc(:published_date)

但是,这只会拉取 company_id 和 region_id 为空或匹配用户属性的帖子。

最佳答案

这是您的查询试试这个 -

Post.where(approved: true,hold_publish: true)
.or(:company_id.in => [nil, @user.company.id],:region_id.in => [nil, @user.region.id])
.or(user_id: @user.id)
.desc(:published_date)

关于ruby-on-rails - 带有 AND 和 OR 的 Mongoid 3 复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12320756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com