gpt4 book ai didi

ruby-on-rails - Controller 中的 Rails 逻辑?

转载 作者:行者123 更新时间:2023-12-03 00:46:47 24 4
gpt4 key购买 nike

我总是阅读有关保持 Controller 精简并在模型中执行所有逻辑的内容。虽然这对于与数据库交互来说很有意义,但是在不需要数据库交互的情况下呢?

我的应用程序中有一个相当复杂的模块,它与多个不同的第三方 API 进行交互。我使用 ajax 调用 Controller ,从 API 收集所有数据,然后进行组织。然后通过相应的.js.erb或.html.erb文件显示。

这是处理这种情况的正确方法吗?我是 Rails 新手,不想养成做错事的习惯。

最佳答案

模型不仅仅用于处理数据库,原则上还用于处理数据。

由于我们不知道你指的是什么情况,我只能介绍一些情况。

Ajax 调用大型数学计算。它不接触数据库,甚至可以在无表模型中进行计算。

# in your controller
def calculating
Calculator.get_integral_log_and_furie params[:data]
end
# in your model
class Calculator
def self.get_integral_log_and_furie(data)
... # multi line code
end
end

因此您可以看到,您可以直接在 Controller 中计算它,但它应该在您的模型中计算,因此它是可重用且干净的解决方案。

另一个例子是使用一些虚拟属性。名字。您可以将第一个、第二个和第三个名称存储在不同的列中,因此您需要将其连接起来。您可以在 Controller 中创建私有(private)方法,但这当然是个坏主意。

class User < AR::Base
def full_name
[first_name, second_name, third_name].compact.join(" ")
end
end

所以你可以在项目中的任何地方调用它:

@user.full_name
# Peter Jhonson, or mu is too short

等等等等

关于ruby-on-rails - Controller 中的 Rails 逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5759063/

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