Ruby on rails 如何在Rails中的模型和控制器之间共享代码?

Ruby on rails 如何在Rails中的模型和控制器之间共享代码?,ruby-on-rails,model-view-controller,abstraction,Ruby On Rails,Model View Controller,Abstraction,我的Rails模型和控制器代码都需要将文件写入文件系统 我想把逻辑整合成一种方法 在模型和控制器之间共享此方法的最佳方式是什么 谢谢 如果您确实需要这样做,您可以在/lib中放置一个模块,并在需要的地方包含它 然而,如果可能的话,你应该让你的模型来处理它。如果您能提供更多细节,将更容易引导您走向正确的方向。我认为控制器会推迟将文件写入模型的文件系统的实际执行。虽然允许控制器决定何时执行该代码,但它不应负责代码的实现,因此代码实际上应该只在模型中。谢谢,matthew。问题是,模型需要编写一个包含

我的Rails模型和控制器代码都需要将文件写入文件系统

我想把逻辑整合成一种方法

在模型和控制器之间共享此方法的最佳方式是什么


谢谢

如果您确实需要这样做,您可以在/lib中放置一个模块,并在需要的地方包含它


然而,如果可能的话,你应该让你的模型来处理它。如果您能提供更多细节,将更容易引导您走向正确的方向。

我认为控制器会推迟将文件写入模型的文件系统的实际执行。虽然允许控制器决定何时执行该代码,但它不应负责代码的实现,因此代码实际上应该只在模型中。

谢谢,matthew。问题是,模型需要编写一个包含渲染调用内容的文件。换句话说,我正在将由Email::Show呈现的页面的静态版本写入磁盘。你有什么建议吗?我不确定我是否完全理解你想要实现的目标,但似乎你的控制器知道写什么,应该写什么,这很好。您所需要做的就是在模型中使用文件写入方法,该方法可以获取从控制器传入的数据并将其写入文件系统。如果我完全没有抓住要点,请告诉我,我会尽力纠正我的回答。我的问题是:为什么电子邮件模型应该知道文件路径和如何写出文件,却不知道如何生成URL(比如,电子邮件需要一个特殊的令牌,因此需要用户单击唯一的URL才能删除电子邮件)?在URL的情况下,我应该(我认为)从控制器或视图生成URL,并从电子邮件模型传递必要的数据。然而,对于文件系统,我将数据传递给模型,并在电子邮件模型中生成文件路径(和文件)。这有意义吗?首先,我不会让我的模型知道在哪里保存文件,我会把它放在配置文件或类似的东西中,这样就可以在不重新编译的情况下更改它。其次,我认为区别在于定义的责任。控制器的作用是接收用户的请求,并向模型和视图发出适当的命令,以实现所需的结果。可以说,这些职责的一部分是整合URL。否则,控制器就是你的现场指挥官,它知道如何处理给定的用户操作,并向其他两层发出命令,但它实际上不应该关心如何完成这项工作。谢谢,matthew。问题是,模型需要编写一个包含渲染调用内容的文件。换句话说,我正在将由Email::Show呈现的页面的静态版本写入磁盘。你有什么建议吗?我建议按照雷达的建议执行,并将渲染的字符串表示形式作为参数传递给模型,然后模型将其写入文件。这样,控制器决定渲染什么,模型决定如何处理。谢谢,伙计们。问题已经转移:我正在通过ActionMailer::receive处理入站消息。当某个用户收到电子邮件时,通过qmail运行的脚本调用此方法。不幸的是,在ActionMailer模型中,我无法访问render()来将\u呈现到\u string()。。。如何在没有复制代码的情况下将静态文件写入磁盘?