我正在尝试从以下Action表格中检索数据:
列: ID、Name、Status、Product_ID、User_ID等其他与此问题无关的列。
每当用户想要一个产品时,我就创建一个记录,如下所示: Name = Want,Status = True,Product_ID = 所需产品的ID,User_ID为用户的ID。
然后,每当用户不想要一个产品时,我就创建一个记录,如下所示: Name = Want,Status = False,Product_ID = 不需要的产品的ID,User_ID为用户的ID。
我之所以这样做是因为我的表中还有其他操作名称。
现在,我想检索所有想要的产品,因此应按降序排序特定用户的所有最新“want”操作(按product_id分组),然后仅检索状态为true的操作。
因此,为了获取按product_id分组的特定用户的所有最新“want”操作,我这样做:
Action.select("DISTINCT ON (product_id) product_id,created_at, status, * ").where{(user_id == id) & (name == 'want')}.group("product_id, id, status").order(' product_id,created_at DESC')
检索每个产品和用户的最后操作,但同时检索真实和虚假状况。唯一的问题是我不知道如何过滤这个表格,只获取true状态的操作。
我尝试像这样做:
```javascript filter((item) => item.status === true) ```
Action.select("DISTINCT ON (product_id) product_id,created_at, status, * ").where{(user_id == id) & (name == 'want')}.group("product_id, id, status").having("status = 'true'").order(' product_id,created_at DESC')
但这将给我最后一个 want = true 的操作。如果最后一个行动是 status = false,它将检索在 status = true 时的上一个。
以下是我想要的一些想法,但我不知道如何在 Rails 中实现:http://sqlfiddle.com/#!9/e4117/3