1

我很难弄清楚如何正确查询我的数据库。

我的查询如下:

@events = Event.where("startdate > '#{now}'")

事件模型中有一个名为 的列name,我需要返回所有name不同的事件,但我还需要所有列。我将如何做到这一点?

我认为这会起作用,但事实并非如此:

@events = Event.where("startdate > '#{now}'").uniq

然后我意识到它不知道看什么来判断唯一性,我如何告诉唯一性看名称列来判断唯一性?

数据:

ID | Name         | Description  | start
1    christmas      holiday        12-25-16
2    christmas      holiday        12-25-17  
3    thanksgiving   holiday        11-24-16

应该返回

1    christmas      holiday        12-25-16
3    thanksgiving   holiday        11-24-16

谢谢,

4

2 回答 2

3

您可以使用块来说明uniq如何完成工作

@events = Event.where("startdate > '#{now}'").uniq(&:name)

否则,这可能会更好,您可以在 SQL 中完成所有操作,因为 uniq不是,它会迭代您的结果集。

@events = Event.where("startdate > '#{now}'").group(:name)
于 2017-06-01T18:13:37.380 回答
0

您可以通过以下方式运行查询:

@event = Event.where("startdate > '#{now}'").uniq(:name)

这将能够为您提供只有唯一条目的数据。

于 2017-06-01T19:42:42.600 回答