我有一系列学生(学生)。我需要从中删除重复的记录,并获得唯一的学生详细信息。在我的控制台中,我变得像
students = [
[#<Student id: 2, admission_no: "2", gender: "m", blood_group: "A">, Wed, 11 Sep 2013, "Student"],
[#<Student id: 17, admission_no: "17",gender: "m", blood_group: "AB">, Sat, 14 Sep 2013, "Student"],
[#<Student id: 17, admission_no: "17",gender: "m", blood_group: "AB">, Tue, 17 Sep 2013, "Student"],
[#<Student id: 2, admission_no: "2",gender: "m">, Tue, 17 Sep 2013, "Student"],
[#<Student id: 17, admission_no: "17",gender: "m", blood_group: "AB">, Thu, 12 Sep 2013, "Student"]
]
我尝试使用students = students.uniq
。但它正在获得nil值。因为我还从另一个表中检索了另外两个属性(日期和类型,即最后两个..)。但是我需要显示唯一的学生记录以及它的类型..我该如何做到了吗?请帮忙。
我试图像这样循环一个数组..
@mem = []
@tran = Transport.find_all_by_month_and_vehicle(date,vehicle)
tran.each do |t|
@mem << [Student.find_by_id(t.mem_id), t.transport_date, vehicle_no] if t.mem_type=="Student"
@mem << [Employee.find_by_id(t.mem_id), t.transport_date, vehicle_no] if t.mem_type=="Employee"
end
在视图页面中,我正在循环它并像这样显示它
@mem.each do |m|
<tr>
<td><%= link_to m[0].first_name} %></td>
<td > <%= m[0].age %></td>
<td id="date"> m[1] </td>
<td id="vehicle"> m[2] </td>
</tr>
<%end%>
答案 0 :(得分:0)
我认为更好的方法是改进您的活动记录查询。但是,如果出于某种原因,无论出于何种原因,那么你所处理的是uniq是最简单的方法,只需将id添加到uniq语句即可。
students = students.uniq(&:id)
答案 1 :(得分:0)
从控制台开始。转到项目根目录并键入rails console
现在尝试根据您的需要找到合适的连接命令..有时候这需要反复试验(对我来说无论如何)
我会尝试类似的事情:
Transport.joins(:students).select('students.id, transport_date, vehicle_no, mem_type').group('students.id').where(:mem_type=>"Student")
您的模型和表中的外键必须具有适当的关联。
http://guides.rubyonrails.org/active_record_querying.html#joining-tables