是否可以查询模型对象并按一列或多列过滤结果以获得唯一性?
我应该用第一个独特的记录来证明这一点,而忽略其余的记录就可以了。
我通常的方法是查询对象并提取 uniq id 或其他任何内容并运行另一个查询。
假设我有一个这样的集合:
Test id: 24997, test_id: 7, group_id: 5408,
Test id: 25001, test_id: 7, group_id: 5412,
Test id: 25002, test_id: 8, group_id: 5413,
Test id: 25004, test_id: 8, group_id: 5415,
Test id: 25007, test_id: 9, group_id: 5417,
Test id: 25008, test_id: 9, group_id: 5299
我想要这样的结果。由 test_id 列唯一:
Test id: 24997, test_id: 7, group_id: 5408,
Test id: 25002, test_id: 8, group_id: 5413,
Test id: 25007, test_id: 9, group_id: 5417
我想是为了完整性。假设这是一个具有多列的直通表。如何获得两列或更多列的唯一记录?
最佳答案
您可以使用 minimum在身份证上:
Test.group(:test_id).minimum(:id)
这些将返回一个带有组键和 id 值的散列,您可以将其传递给作用域上的 where 条件:
Test.where(id: (Test.group(:test_id).minimum(:id).values))
关于ruby-on-rails - 获取所有事件记录对象过滤为唯一的一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881017/