如何在rails中返回不同的行?

时间:2017-04-02 10:27:31

标签: ruby-on-rails ruby model

我有一个包含字段program_title,department_id和date的模型程序。我插入了两行具有相同程序标题和日期但行不同的department_id。

Insert into programs(program_title,date,department_id) Values ("prog1","4/2/2017","1");
Insert into programs(program_title,date,department_id) Values ("prog1","4/2/2017","2");

现在我想返回与program_title不同的行,无论是department_id。我试过了,

@event_contents=Program.select(:id,:date,:program_title).distinct(:program_title)

但它仍会返回两行。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

使用DISTINCT时,SQL只能折叠所有值相同的行。因为您选择的id对于每条记录都不同,所以行不是不同的。 E.g:

---------------------------------
| id | program_title | date     |
---------------------------------
|  1 | prog1         | 4/2/2017 |
|  2 | prog1         | 4/2/2017 |
---------------------------------

您需要从id中排除#select才能使其发挥作用:

Program.select(:date, :program_title).distinct

答案 1 :(得分:0)

试试这个

Program.all.distinct(:program_title).pluck( :id,:program_title,:date)

它会将数据作为元素数组返回

希望有所帮助