首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Rails (第三版)的敏捷Web开发是否会造成不良的编码习惯?

带有Rails (第三版)的敏捷Web开发是否会造成不良的编码习惯?
EN

Stack Overflow用户
提问于 2010-09-08 20:42:28
回答 2查看 161关注 0票数 0

带有Rails的敏捷Web开发(第三版)是否教授最佳实践以及Rails编码?

我担心的是,当我使用这本书时,我正在开发坏的Rails编码习惯,这是由于这本书中使用的示例的基本性质造成的。个案:

产品模型:

代码语言:javascript
复制
class Product < ActiveRecord::Base
  def self.find_products_for_sale
  find(:all, :order => "title" )
end

存储控制器

代码语言:javascript
复制
class StoreController < ApplicationController
  def index
    @products = Product.find_products_for_sale
  end
end

存储索引视图

代码语言:javascript
复制
<h1>Your Pragmatic Catalog</h1>
<% @products.each do |product| -%>
  <div class="entry">
  <%= image_tag(product.image_url) %>
  <h3><%=h product.title %></h3>
  <%= product.description %>
  <div class="price-line">
  <span class="price"><%= product.price %></span>
  </div>
  </div>
<% end %>

声明“助手”函数是最佳实践吗?仅仅是为了获取目录中的所有可用产品吗?他们不是应该这么做的吗?

@products = Products.find(:all, :order => "title")

我知道他们可能只是试图演示类级别的方法,但是他们并没有在代码中添加任何警告,说明这并不是您应该这么做的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-08 20:50:10

我觉得你本可以这么做的。

但有时,当进行复杂的查找时,最好将其抽象为定制的find语句。应用模型特定的业务规则等,应在模型内部而不是控制器内执行。所以这并不是个坏主意。

您甚至可以使用named_scopes来做类似的事情。请查收更多信息

http://railscasts.com/episodes/108-named-scope

票数 2
EN

Stack Overflow用户

发布于 2010-09-08 20:55:25

我不能代表整本书,但从你的例子来看,我发现这不是一个坏的编码习惯,而是一个好的习惯。

它实际上不是一个助手方法,它是Product类上的一个特定查询,应该这样命名/声明。

将来,如果您需要改变find_products_for_sale工作方式的功能--我觉得这个命名有点奇怪,我更喜欢for_sale-then--您可以在模型中这样做,而不需要碰您的控制器。如果您的控制器中有多个使用find_products_for_sale的操作,那么您就有效地节省了大量输入/潜在的麻烦。

现在,对于这些类型的事物,有了named_scope( Rails 3,即scope),这是一种更好的表述它们的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3671713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档