gpt4 book ai didi

ruby-on-rails - 在 Mailboxer gem 中扩展对话模型

转载 作者:数据小太阳 更新时间:2023-10-29 07:32:03 26 4
gpt4 key购买 nike

我想扩展对话模型,以便我可以使用它的关联。我通过在 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>

最佳答案

问题是如果 Mailboxer::Conversation 被调用,app/models/conversation.rb 将不会被加载。我通过将您的代码移动到 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com