2

我有一个带有字段的模型消息:id、message、read、view_count。查看计数是从另一个表计算的,它不在消息模型中

我想要做的是遍历所有消息并跟踪所有未读(读=假)和每个未读的视图计数以输出如下内容:

1, "message stuff", false, 14
2, "message stuff", false, 31
3, "message stuff", false, 1

在像这样循环消息时:

Messages.each do |m|
end

在循环中,如何构建一个捕获 message.id 和 view_count 的数组。然后如何输出最终结果?

谢谢

4

3 回答 3

3
mes_fields = Array.new
messages = Array.new
mess = Messages.where("read = ?", false)


mess.each_with_index do |m_row, index|
    m_row.each do |m|
        mes_fields.push(m)
    end
    messages.push(mes_fields[index])
end

然后message看起来像

[[1, "message stuff", false, 14],
 [2, "message stuff", false, 31],
 [3, "message stuff", false, 1]]
于 2013-03-14T03:38:27.523 回答
3

我可以推荐一个哈希吗?

message_hash = {}

Messages.where(:read => false).each do |m|
  messages_hash[m.id] = m.view_count
end

puts messages_hash

假设

class Messages
  def view_count
    #some view_count calculation code.
  end
end

未经测试,但这应该很接近。

输出

{
  11 => 33,
  12 => 11,
  13 => 34,
}
于 2013-03-14T03:05:34.120 回答
0

尝试这个:

Message.where(:read => false).map{ |m| [m.id, m.view_count]}
# => [ [ 1, 14], [ 2, 31], [ 3, 1]]
于 2013-03-14T03:30:56.103 回答