从头开始构建消息系统,并在Rails 4中建立多个收件人

亚当·雅格(Adam Yarger)

我一直在尝试为我的站点构建一个使用devise进行身份验证的消息传递系统。它要求的功能是能够将消息发送给一个或多个收件人(最好同时列出用户的清单)。搜索了一会儿之后,我发现了一些类似gem的东西,例如mailboxer,但是我并不需要它的所有功能,而是想构建自己的系统来学习(仍然是一个新手)。

我遵循了这个古老的教程(http://web.archive.org/web/20100823114059/http://www.novawave.net/public/rails_messaging_tutorial.html)。我意识到这是一个非常古老的教程,但这是我唯一能找到与我想要达到的目标相匹配的教程。

在我的代码不起作用之后,我将教程跟随到了T甚至从教程中复制并粘贴了代码。

尝试访问http:// localhost:3000 / mailbox时,MailboxController#index中出现NoMethodError

undefined method `messages' for nil:NilClass
app/controllers/mailbox_controller.rb:12:in `show'
app/controllers/mailbox_controller.rb:6:in `index'

我还引用了这个问题Rails 3:Folder的未定义方法消息,消息与我有相同的错误,但是该主题似乎无处可去。

Mailbox_controller.rb

  class MailboxController < ApplicationController

  def index

    @folder = current_user.inbox
    show
    render :action => "show"
  end

  def show
    @folder ||= current_user.folders.find_by(params[:id])
    @messages = @folder.messages :include       => :message, :order => "messages.created_at DESC"
  end
end

型号/folder.rb

class Folder < ActiveRecord::Base
  acts_as_tree
  belongs_to :user
  has_many :messages, :class_name => "MessageCopy"
end

对此的任何帮助都会很棒,如果需要更多信息,也请告诉我,并将其发布。

亚当·雅格(Adam Yarger)

最后,我做了一些修改来弄清楚消息传递系统。我想发布我的整个解决方案,因为这给我带来了困难,并且可能对其他人有用。我将其保持得非常简单,并且不包括首先给我带来问题的文件夹模型,但仍然起作用。

这是我的协会

型号/message.rb

attr_reader :user_tokens

belongs_to :sender, :class_name => 'User'
has_many :recipients
has_many :users, :through => :recipients

def user_tokens=(ids)
    self.user_ids = ids
end

模型/收件人.rb

belongs_to :message
belongs_to :user

型号/user.rb

has_many :messages, :foreign_key => :sender_id

这是我的邮件控制器

messages_controller.rb

def new
    @message = Message.new
    @user = current_user.following
    @users = User.all
    # @friends = User.pluck(:name, :id).sort
end

def create
    @message = current_user.messages.build(message_params)

    if @message.save
        flash[:success] = "Message Sent!"
        redirect_to messages_path
    else
        flash[:notice] = "Oops!"
        render 'new'
    end
end

def index
    @user = User.find(current_user)
    @messages = Recipient.where(:user_id => @user).order("created_at DESC")

end

private

    def message_params
        params.require(:message).permit(:body, :sender_id, user_tokens: [])
    end

我的看法

_form.html.erb

  </div>
  <!-- displays the current users frinds their following -->
  <%= f.select :user_tokens, @user.collect {|x| [x.name, x.id]}, {}, :multiple => true, class: "form-control" %>
  <br>

  <div class="modal-footer">
    <%= f.button :submit, class: "btn btn-primary" %>
  </div>

架构图

messages_table

t.text     "body"
t.integer  "sender_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string   "body_html"

receivers_table

t.integer  "message_id"
t.integer  "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false

我希望这有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从头开始构建消息系统,并在Rails 4中建立多个收件人

来自分类Dev

Rails Actionmailer发送多个收件人

来自分类Dev

如何在Rails4中将多个收件人添加到电子邮件中?

来自分类Dev

如何在PostgreSQL中与多个收件人一起存储消息?

来自分类Dev

收件人如何输入消息并在浏览器中显示

来自分类Dev

收件人如何输入消息并在浏览器中显示

来自分类Dev

修改MAPI消息的收件人

来自分类Dev

Ruby on Rails,Grocer无法发送推送通知给多个收件人

来自分类Dev

无需使用密件抄送即可遍历多个电子邮件收件人的Rails rake任务

来自分类Dev

Railscasts:从头开始进行身份验证-Rails 4中缺少:session参数问题

来自分类Dev

jQuery从头开始上传多个文件

来自分类Dev

发送消息后,在Thunderbird扩展中获取发件人和收件人

来自分类Dev

如何在Rails中获得一系列收件人?

来自分类Dev

如何在Rails中读取文件块而无需从头开始再次读取

来自分类Dev

如何在Rails中读取文件块而无需从头开始再次读取

来自分类Dev

多个收件人的字段

来自分类Dev

Odoo 机会新消息取消选中收件人

来自分类Dev

TypeError: {'name:busi,group:1'} 在 python 中从头开始构建 json 时不是 JSON 可序列化的

来自分类Dev

从头开始投票系统

来自分类Dev

从头开始构建libharu

来自分类Dev

Java邮件中多个收件人的多个主题

来自分类Dev

Java邮件中多个收件人的多个主题

来自分类Dev

从头开始在iOS中滑出导航面板

来自分类Dev

从头开始在Haskell中编写解析器

来自分类Dev

在sinon中“从头开始”创建伪造的object.method()?

来自分类Dev

如何在IntelliJ 14中从头开始运行代码?

来自分类Dev

从头开始的数据集和输出中的Yolo

来自分类Dev

从头开始在Eclipse中创建Cordova应用程序

来自分类Dev

从头开始DIY G代码。(在BASIC中)

Related 相关文章

  1. 1

    从头开始构建消息系统,并在Rails 4中建立多个收件人

  2. 2

    Rails Actionmailer发送多个收件人

  3. 3

    如何在Rails4中将多个收件人添加到电子邮件中?

  4. 4

    如何在PostgreSQL中与多个收件人一起存储消息?

  5. 5

    收件人如何输入消息并在浏览器中显示

  6. 6

    收件人如何输入消息并在浏览器中显示

  7. 7

    修改MAPI消息的收件人

  8. 8

    Ruby on Rails,Grocer无法发送推送通知给多个收件人

  9. 9

    无需使用密件抄送即可遍历多个电子邮件收件人的Rails rake任务

  10. 10

    Railscasts:从头开始进行身份验证-Rails 4中缺少:session参数问题

  11. 11

    jQuery从头开始上传多个文件

  12. 12

    发送消息后,在Thunderbird扩展中获取发件人和收件人

  13. 13

    如何在Rails中获得一系列收件人?

  14. 14

    如何在Rails中读取文件块而无需从头开始再次读取

  15. 15

    如何在Rails中读取文件块而无需从头开始再次读取

  16. 16

    多个收件人的字段

  17. 17

    Odoo 机会新消息取消选中收件人

  18. 18

    TypeError: {'name:busi,group:1'} 在 python 中从头开始构建 json 时不是 JSON 可序列化的

  19. 19

    从头开始投票系统

  20. 20

    从头开始构建libharu

  21. 21

    Java邮件中多个收件人的多个主题

  22. 22

    Java邮件中多个收件人的多个主题

  23. 23

    从头开始在iOS中滑出导航面板

  24. 24

    从头开始在Haskell中编写解析器

  25. 25

    在sinon中“从头开始”创建伪造的object.method()?

  26. 26

    如何在IntelliJ 14中从头开始运行代码?

  27. 27

    从头开始的数据集和输出中的Yolo

  28. 28

    从头开始在Eclipse中创建Cordova应用程序

  29. 29

    从头开始DIY G代码。(在BASIC中)

热门标签

归档