繁体   English   中英

Rails - 带枚举的Activerecord条件

[英]Rails - Activerecord conditions with enum

我有一个Item模型和一个UserItem模型。 Item有很多UserItems。

两种型号都使用Enum:

enum status: [ :pending, :approved]

我需要查询Item以返回user_items,其中item.id!= 1,item.status被批准,user_items.status正在等待。 我遇到了正确的语法问题

Item.joins(:user_items).where( "items.id != ? and items.status = ? and user_items.status = ?", 1, ???, ???)

编写此查询的正确方法是什么?

既然你选择了UserItems,并且假设你在has_many关系查询的另一边有belongs_to :item就会看起来像

UserItem.pending.joins(:item).merge(Item.approved.where.not(id:1))

尝试这个-

UserItem.joins("LEFT OUTER JOIN items.id = user_items.id").where("items.id != ? AND items.status = ? AND user_items.status = ?", 1, "approved","pending")

如果您不想使用范围

Item.joins(:user_item).where(“items.id!=?和items.status =?and user_items.status =?”,1,Item.statuses [:pending],UserItem.statuses [:approved])

但是使用范围总是更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM