Mailboxer / Rails:'sender ='的未定义方法

时间:2014-02-24 05:31:34

标签: ruby-on-rails mailboxer

我一直在为这个问题做了一天半的时间。我正在使用Mailboxer gem来创建一个非常简洁的消息传递系统;一个与样本相同的 - https://github.com/RKushnir/mailboxer-app - 只是从这个宝石开始。

我确实让两个存储库在我的计算机上彼此相邻。特定于邮箱的模型,迁移,初始化程序,我能找到的一切。这包括用户模型,name操作。我甚至尝试使用Notification轻松使用attr_accessible模型。

数据库完全相同。

当我在示例应用程序中保存对话后尝试在控制台/种子中创建消息时,这很容易。保存对话后,我运行:

n = Message.new
n.sender = User.find(1)
n.subject = 'Hi'
n.body = 'Hello there.'
n.conversation_id = Conversation.find(1).id
n.save

繁荣。它工作得很漂亮。另一方面,我的应用程序功能相同;直到它到达sender字段。

当我尝试设置发件人时:

n.sender = User.find(1)

我收到此错误:NoMethodError: undefined method 'sender=' for #<Message:0x00000101708eb8>

为什么?

这让我发疯了。如果有人能提供一些帮助,我真的很感激。提前谢谢。

消息/通知架构:

  create_table "notifications", force: true do |t|
    t.string   "type"
    t.text     "body"
    t.string   "subject",              default: ""
    t.integer  "sender_id",                            null: false
    t.integer  "conversation_id"
    t.boolean  "draft",                default: false
    t.datetime "updated_at",                           null: false
    t.datetime "created_at",                           null: false
    t.integer  "notified_object_id"
    t.string   "notified_object_type"
    t.string   "notification_code"
    t.string   "attachment"
    t.boolean  "global",               default: false
    t.datetime "expires"
  end

  add_index "notifications", ["conversation_id"], name: "index_notifications_on_conversation_id", using: :btree

这是gem生成的内容,它也与示例应用程序相同。

1 个答案:

答案 0 :(得分:0)

看看Mailboxer gem sent_message方法here,你可能会觉得它很有帮助。

您还可以使用send_message方法内置的邮箱发送消息

sender = User.find(1)
receiver = User.find(2) 
sender.send_message(receiver,"Subject", "Body")