我想扩展对话模型,以便我可以使用它的关联。我通过在 app/models 目录中以这种方式创建一个名为“conversation.rb”的文件来完成它:
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>
最佳答案
问题是如果调用 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
这样的东西应该是可能的。关于ruby-on-rails - 在 Mailboxer gem 中扩展对话模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24653237/