我有一个项目模型(:name,:desc,...)和一个价格模型(:item_id,:status,...)。项目有多个价格&一个价格属于一个项目。
我需要选择所有没有价格或没有状态为“有效”的价格的项目。因此,如果项目有多个价格,但有一个价格为“有效”,则我不想包括它。
- 谢谢-谢谢
Item.includes(:prices).where(prices: {item_id: nil}).or(Item.includes(:prices).where.not(prices: {status: 'active'}))
是我能想到的最好的...
1条答案
按热度按时间envsm3lx1#
有很多不同的方法来解决这个问题--最简单的多国语言解决方案是使用子查询来获取“活动价格”:
第一个
还有更多新颖的数据库特定选项,如横向连接或在Postgres上使用FILTER:
第一次