我有以下材料:
- 属于一个用户:user_id:
- 可以是大师或版本:状态:
- 如果一个版本可以有一个parent_id:parent_id:(注意:如果它是一个master,则parent_id将为nil)
我想获得以下所有材料:
a) 属于某个用户 b) 不是版本,除非版本的 parent_id 不是 master 的 id 之一
我将如何进行这种查询?
我有以下材料:
我想获得以下所有材料:
a) 属于某个用户 b) 不是版本,除非版本的 parent_id 不是 master 的 id 之一
我将如何进行这种查询?
我不确定我是否理解正确。这将为您提供给定用户的主材料或(不是用户主子的版本材料)。
master_ids = certain_user.materials.where(status: 'master').pluck(:id)
certain_user.materials.where("status = ? OR parent_id NOT IN (?)", 'master', master_ids)
如果您无权访问用户实例,只需替换certain_user.materials
为Material.where(user_id: the_id_of_the_user)
试试这些...
a)Material.joins(:users).merge(User.where(field: value))
b)Material.where("parent_id IS NOT NULL and parent_id not in (?)", Material.pluck(:id))