我有一个学生收集结果集,我需要关注。 应按照以下规则解析显示名称:如果集合中没有其他学生具有相同的名字,则显示它们 名字应该只是他们的名字。
答案 0 :(得分:0)
试试这个
@results.each do |object|
displayname = (@results.select { |filter_object| filter_object.first_name == object.first_name }.count > 0) ? object.first_name : object.first_name + " " + object.last_name.initial
end
答案 1 :(得分:0)
这里有一个例子,这可能不是你需要的(这听起来像家庭作业),但希望它能给你一个想法。
# in Student model
attr_accessor :display_name
# in controller
students = Student.all
students.each do |student|
if students.count { |s| s.first_name == student.first_name } > 1
student.display_name = s.first_name
else
student.display_name = "#{student.first_name} #{student.last_name[0].upcase}"
end
end
# in view
<% students.each do |student| %>
<%= student.display_name %>
<% end %>
答案 2 :(得分:0)
首先找出重复的名字。
dup_first_names = Student.select(:first_name).group(:first_name).group(:first_name).having("COUNT(*) > 1").uniq.pluck(:first_name)
然后为每个学生检查名字是否在dup_first_names
数组中。
Student.all.each do |s|
if dup_first_names.include?(s.first_name)
puts "#{s.first_name} #{s.last_name.first}"
else
puts "#{s.first_name}"
end
end