我有一个模型消息w字段: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的数组。然后我如何输出最终结果?
谢谢
答案 0 :(得分: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,
}
答案 1 :(得分: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]]
答案 2 :(得分:0)
试试这个:
Message.where(:read => false).map{ |m| [m.id, m.view_count]}
# => [ [ 1, 14], [ 2, 31], [ 3, 1]]