首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mailboxer gem中扩展会话模型

在Mailboxer gem中扩展会话模型
EN

Stack Overflow用户
提问于 2014-07-09 20:06:02
回答 2查看 780关注 0票数 4

我想扩展会话模型,这样我就可以使用关联了。我已经这样做了,在app/models目录中创建了一个名为'conversation.rb‘的文件,方法如下:

代码语言:javascript
复制
Mailboxer::Conversation.class_eval do
  belongs_to :device, class_name: "Device", foreign_key: 'device_id'
end

我还在conversations表中添加了一个名为'device_id‘的列。

但当我尝试时:

代码语言:javascript
复制
Conversation.last.device

它说:

代码语言:javascript
复制
NoMethodError: undefined method `device' for #<Mailboxer::Conversation:0x007fe83e6ae7c0>
EN

回答 2

Stack Overflow用户

发布于 2015-02-26 15:48:29

问题是如果调用Mailboxer::Conversationapp/models/conversation.rb将不会被加载。我把你的代码移到了config/initializers/mailboxer.rb上,为自己做了这件事。此外,我将代码包装在Rails.application.config.to_prepare中,因为在开发模式下,此代码必须在重新加载时重新执行(请参阅Monkey patching Devise (or any Rails gem)):

代码语言:javascript
复制
Mailboxer.setup do |config|
  [...]
end

Rails.application.config.to_prepare do
  Mailboxer::Conversation.class_eval do
    belongs_to :device
  end
end

这样,像current_user.mailbox.conversations.first.device这样的东西应该是可能的。

票数 3
EN

Stack Overflow用户

发布于 2014-07-30 23:47:53

您可以尝试从它继承

代码语言:javascript
复制
class Conversation < Mailboxer::Conversation
  belongs_to :device, class_name: "Device", foreign_key: 'device_id'
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24653237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档