我想扩展Conversation模型,以便我可以使用它的关联。我是通过创建一个名为' conversation.rb'的文件来完成的。在app / models目录中这样:
Mailboxer::Conversation.class_eval do
belongs_to :device, class_name: "Device", foreign_key: 'device_id'
end
我还添加了一个名为' device_id'的列。在对话表中。
但是当我尝试时:
Conversation.last.device
它说:
NoMethodError: undefined method `device' for #<Mailboxer::Conversation:0x007fe83e6ae7c0>
答案 0 :(得分:3)
问题是如果app/models/conversation.rb
被调用,Mailboxer::Conversation
将无法加载。通过将代码移动到config/initializers/mailboxer.rb
,我为我工作了。另外,我将代码包装在Rails.application.config.to_prepare
中,因为在开发模式下,此代码必须在重新加载时重新执行(参见Monkey patching Devise (or any Rails gem)):
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
之类的东西应该是可能的。
答案 1 :(得分:1)
您可以尝试从中继承
class Conversation < Mailboxer::Conversation
belongs_to :device, class_name: "Device", foreign_key: 'device_id'
end