我们正在尝试为项目建立最佳实践,并且我们正在讨论应该在何处放置SQL和ActiveRecord方法。Ruby on Rails ActiveRecord约定
我的理解是,你想保持尽可能多的逻辑控制器尽可能。我认为我们同意属于模型的复杂SQL查询,但我们不同意简单的AR方法应该在哪里存在,无论是在控制器还是在模型中。
因此,与喜欢的东西简单化:
client = Client.find(10)
会是理想的生活在一个模型或控制器?我明白它可能没有太大的区别,答案也没有关系,但对这个问题的任何洞察力都会很大。
'client = Client.find(10)'是一个相当简单的操作,并且有一点不在上下文中,所以我会说它可能会进入控制器或模型,具体取决于它的完成原因。没有其他指导,我可能会说控制器。约定是控制器和视图在代码上很简单,代码在模型中(并且在助手中查看帮助代码),但它是一个*规范*(并非绝对规则),这是有原因的,很多代码与排序,筛选和处理与模型相关的数据有关。控制器可以有*一些*代码。:) – lurker
这是一个讨论,源自博客阅读:“复杂的查询(即比简单的查找更复杂);一般来说,你不应该使用where方法或任何其他查询构建方法喜欢它,在模型类本身之外“。 我刚才意识到他说的发现可以在控制器中使用,那么Client.where(“first_name ='Carly'”) 我认为这应该是在控制器之外? – CarlyL
对于'Client.where(“first_name ='Carly'”)',我仍然会说*它取决于*(在上下文中)。 :) – lurker