gpt4 book ai didi

ruby-on-rails - 我应该如何在 Rails 和 ActiveRecord 中表示消息和消息发送?

转载 作者:太空宇宙 更新时间:2023-11-03 16:26:51 26 4
gpt4 key购买 nike

我经常想向应用程序的用户发送消息。

我在想有一个像这样的无表模型:

class Dispatcher
def any_reason_to_send_message?
if condition_met
self.send
end
end

def send
# do the sending
end
end

我应该把我想完成的事情写成实例方法(如上)还是类方法?或者我应该把这种逻辑放在一个完全不同的地方(例如 module)?

最佳答案

调度器是发送消息的东西,而不是消息本身。不知道您的应用程序中是否真的有一个调度程序。我会制作一个模型消息。 Message#send_message 将是一个完全明智的方法。我会让 Message 成为一个保存在表中的普通模型,因为能够回顾并查看何时向谁发送了什么消息是很有值(value)的。

现在,如果您确实有一堆发送消息的代码——一个 Dispatcher——并且想知道把它放在哪里,这就是我要做的:

  • 向应用程序添加一个服务子目录(在模型、 View 等旁边)
  • 将目录添加到config/application.rb中的config.autoload_paths

现在您可以放置​​新类型的类:服务,它将您的应用程序连接到外部。你的 dispatcher.rb 可以进去。我喜欢将服务设为单例,以便在测试中更容易替换它们。 (是的,我知道单例在类型化语言中是邪恶的,但在 Ruby 中它们很容易获得,所以这不是什么大问题。)

你可以有一个 Dispatcher#send_message(message) 实例方法,它使用任何需要的底层技术发送给定的消息,还有一个 Message#send_message 实例方法,它只做 Dispatcher.instance.send_message self .

请注意,Ruby 对象已经有一个实例方法 send , 所以我选择了 send_message .

关于ruby-on-rails - 我应该如何在 Rails 和 ActiveRecord 中表示消息和消息发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395161/

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