我有以下材料:
我想获得所有材料:
a)属于某个用户 b)不是版本,除非版本的parent_id不是主人的ID之一
我该如何进行此类查询?
答案 0 :(得分:1)
我不确定我是否理解正确。 这将为您提供给定用户的主材料或(不是用户主人的子项的版本材料)。
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)
答案 1 :(得分:0)
试试这些......
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))