0

我正在尝试使用 Mailboxer 向用户发送通知,并且我需要传递一个对象,该对象将影响通知在导航栏的通知下拉列表中的显示方式。

@recipient.notify("#{current_user.name} needs you to review his help with: #{@offer.title}", "#{@message}", @offer)

最后一个参数是我试图传递对象的地方,@offer.

这是我正在尝试使用的 Mailboxer 方法:

 def notify(subject,body,obj = nil,sanitize_text=true,notification_code=nil,send_mail=true)
    Mailboxer::Notification.notify_all([self],subject,body,obj,sanitize_text,notification_code,send_mail)
  end

它调用这个notify_all方法:

def notify_all(recipients, subject, body, obj = nil, sanitize_text = true, notification_code=nil, send_mail=true)
  notification = Mailboxer::NotificationBuilder.new({
    :recipients        => recipients,
    :subject           => subject,
    :body              => body,
    :notified_object   => obj,
    :notification_code => notification_code
  }).build

  notification.deliver sanitize_text, send_mail
end

当我尝试使用 this: 访问对象时<%= notification.object_id %>,我得到一个长数字,例如205981093. 如果我尝试使用以下方法访问offer对象的字段之一,则会出现错误:<%= notification.object_id.title %>

`undefined method `title' for 2166878920:Fixnum`

我什至不确定这是否是使用邮箱通知的方式。我很难找到有关它们的信息。任何帮助是极大的赞赏。

4

2 回答 2

3

https://github.com/mailboxer/mailboxer/blob/master/app/models/mailboxer/notification.rb所示

Notification.rb 为通知对象提供多态关联。

belongs_to :notified_object, :polymorphic => :true

因此,您需要将通知指定为要传递的对象模型中的关联。对于 ex 这里你可以在 Offer.rb

has_many :notifications , as: :notified_object.
于 2015-12-03T13:51:23.717 回答
2

尝试以下操作以获取未读通知

current_user.mailbox.notifications(:read => false)
于 2014-09-21T18:33:57.430 回答