Pat*_*atm 6 ruby-on-rails ruby-on-rails-3
我总是在阅读关于保持控制器变薄以及在模型中完成所有逻辑的内容.虽然这让我感觉与数据库交互,但是不需要数据库交互的情况呢?
我的应用程序中有一个相当复杂的模块,可以与几个不同的第三方API进行交互.我对我的控制器使用ajax调用,其中所有数据都是从API收集然后组织的.然后通过相应的.js.erb或.html.erb文件显示它.
这是处理这种情况的正确方法吗?我是铁杆的新手,不想养成做错事的习惯.
模型不仅适用于处理数据库,还适用于原则上处理数据.
至于我们不知道你的意思是什么,我可以提出一些情况.
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
Run Code Online (Sandbox Code Playgroud)
因此,您可以看到您可以在控制器中正确计算它,但它应该在您的模型中计算,因此它是可重复使用的清洁解决方案.
另一个例子是使用一些虚拟属性.名称.您可以在saparate列中存储第一个,第二个和第三个名称,因此您需要加入它.你可以在controler中创建privae方法,但当然这是个坏主意.
class User < AR::Base
def full_name
[first_name, second_name, third_name].compact.join(" ")
end
end
Run Code Online (Sandbox Code Playgroud)
所以你可以在项目的任何地方调用它:
@user.full_name
# Peter Jhonson, or mu is too short
Run Code Online (Sandbox Code Playgroud)
等等等等