[英]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.