申请中的通知系统

时间:2016-01-01 17:47:33

标签: ruby-on-rails ruby notifications messaging

我是铁轨上的红宝石初学者。我正在构建一个论坛应用程序。除了帖子的帖子和评论之外,我还想要应用程序中的私人消息系统。应将消息发送给所需的用户("只有该用户才能看到消息")。为此,我生成了一个模型通知,其中包含消息

通知模型

class Notification < ActiveRecord::Base
    belongs_to :user
end

通知迁移

class CreateNotifications < ActiveRecord::Migration
  def change
    create_table :notifications do |t|
      t.text :message  
      t.timestamps null: false    
      t.references :user, index: true, foreign_key: true    
    end   
  end
end

通知控制器

class NotificationsController < ApplicationController


    def index
        @notifications = Notification.all.order("created_at DESC")

    end

    def new
        @notification = Notification.new
    end

    def create
        @notification = Notification.new notification_params
        if @notification.save
            redirect_to(:controller => "posts", :action => "index")
        else
            render "new"
        end
    end

    private

    def notification_params
        params.require(:notification).permit(:message, :user_id)
    end

end

通知#new 视图

<%= form_for(:notification, :url => {:action => "create"}) do |f| %>

    <%= f.text_field(:message, :placeholder => "Enter your message") %>
    <%= f.hidden_field(:user_id, :value => session[:user_id]) %>
    <%= f.submit("send message") %>

<% end %>

如何在表单中发送目标用户属性?或者消息系统有不同的方式吗?
请帮帮我。我感谢你的回答。提前谢谢。

1 个答案:

答案 0 :(得分:2)

您需要在通知中存储对收件人的引用。

class NotificationsController < ApplicationController def create @user = User.find(session[:user_id]) @notification = @user.notifications.new notification_params # ... end end

{{1}}

也不要在表单中设置user_id,将其设置在控制器中。 (否则任何人都可以通过发送错误的输入为其他人创建通知。)

{{1}}

不是一个完整的解决方案,但会指出正确的方向。