ruby-on-rails – Rails 3视图中是否可以接受查询?
我对MVC的理解是SQL(或任何与持久性相关的)查询应该只在Model / Controller对象中执行.因此,Rails 3 documentation about Controllers指出:
但是,文档中也有使用queries directly in View (HTML helper) code的示例: select("post","person_id",Person.all.collect {|p| [ p.name,p.id ] }) # Note the model query -----^ 在Rails 3中,通常可以在Views中执行查询,还是有一个令人信服的理由将这些查询严格委托给Model或Controller对象?文档只是说明性的还是最佳实践的例证? 解决方法
我认为这仅仅是示范性的,而且一般来说并不是一个很好的例子.它与我们可以在PHP中找到的SQL Spaghettis代码足够接近.
我现在正在阅读Rails anti-patterns book,他们建议在模型中查找所有这些查询.然后,控制器可以访问模型中定义的方法,将结果暴露给视图. 但是,如果你不注意,你可以很快发现自己有脂肪模型,为了避免你可以使用Named scopes这对这种模式有很大的帮助.要注意的另一个关键规则是应用于Rails的Law of Demeter意味着一个模型不应该对其他模型的实现细节了解太多.因此,如果存在与关联模型相关的查询,则应在此关联模型中进行范围调整. 最后,下面的article(由Jamis Buck编写)(瘦模控制器,脂肪模型)是一个很好的阅读主题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |