你能推荐一个使用Rails 3生成facebook风格的消息收件箱的插件或gem吗?

时间:2011-06-28 16:25:04

标签: ruby-on-rails facebook

我希望用户能够发送和接收消息并在收件箱中查看它们,类似于在Facebook中完成的方式:它显示主题并知道是否收到或发送了特定消息,然后单击显示整个线程。

我一直在尝试使用带有UserMessage的单个Message记录 - 一个用于发件人,另一个用于收件人 - 但不完全确定如何,例如,显示用户的所有邮件是否收件人或发件人。

理想情况下,有人已经在插件或宝石中完成了这项工作,我可以重新调整用途。

2 个答案:

答案 0 :(得分:0)

这对你来说不是一项非常困难的任务。我们希望能够在用户之间发送消息。假设我们有一个User模型看起来像(为了简单起见)

create_table "users", :force => true do |t|
    t.string   "username",        :null => false
    t.string   "hashed_password", :null => false
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "salt",            :null => false
end

Message模型看起来像(为了简单起见)

create_table "messages", :force => true do |t|
    t.string   "subject",       :null => false
    t.integer  "sender_id"
    t.integer  "recipient_id"
    t.datetime "created_at"
    t.datetime "updated_at"
end

Msgcontent模型看起来像

 create_table "msgcontents", :force => true do |t|
    t.string   "body",       :null => false
    t.integer  "message_id"
    t.integer  "sender_id"
    t.datetime "created_at"
    t.datetime "updated_at"
end

现在您已经设置了这些模型,在控制器中可能会有类似的内容。

def show_all_messages
    @sent_messages = Message.find_all_by_sender_id(params[:user_id])
    @received_messages = Message.find_all_by_recipient_id(params[:user_id])
end

def show_message_detail
    @thread = Msgcontent.find_all_by_message_id(params[:message_id])
end

当前用户已登录params[:user_id]params[:message_id]是您要详细显示的消息。您也可以将2个变量组合成一个变量,但是您可能希望将它分开,这取决于您。这样,在您的视图中,您可以适当地显示用户已发送和接收的所有消息。我不打算编写一个完整的代码视图,但基本上有show_all_messages获取用户所属的所有消息,而show_message_detail将获取消息的整个线程。我将把这部分留给你:)

如果您希望能够判断用户是否看过该消息,您可以在Message模型中添加2个字段,然后将其转换为

create_table "messages", :force => true do |t|
    t.string   "subject",              :null => false
    t.integer  "sender_id"
    t.integer  "recipient_id"
    t.datetime "sender_lastviewed",    :null => false
    t.datetime "recipient_lastviewed", :null => false
    t.datetime "created_at"
    t.datetime "updated_at"
end

现在,您将知道发件人或收件人查看邮件的最后日期。在show_all_messages中,您需要更新Message模型,以反映您添加到表格中的两列。然后,为了能够在_lastviewed之后获取您需要在代码中使用条件的消息,可以找到here

如果你真的想找到一个宝石,你可以用一些勤奋的谷歌搜索,但是这里有一些非常基本的Rails(和数据库)概念,如果你想要依赖自己的知识,这对你来说是必不可少的为了未来的发展。

答案 1 :(得分:0)

has_mailbox gem

是否在用户之间发送消息,我正在我的示例项目上测试它:) 并且不要忘记在gem文件中添加will_paginate gem因为现在ha_mailbox gem显示错误incase will_paginate不在gem文件中。我认为这取决于它