代码之家  ›  专栏  ›  技术社区  ›  Meltemi

Rails模型有多复杂?示例项目?

  •  3
  • Meltemi  · 技术社区  · 14 年前

    初学者 中间的 但我发现很难找到更先进的例子来学习。

    例如,我读过一篇文章,你需要小心“嵌套路由”,不能超过2个深度。在这种情况下会发生什么?

    • 项目可以有多种类型的选项
    • 每种类型的选项都有限制:在特定日期可用,或需要选择,或影响总价等。

    这是一个愚蠢的差事还是简单的东西铁路。我假设后者,但找不到任何有趣的例子项目(源代码)在那里学习?书似乎只停留在基础上。。。思想?

    3 回复  |  直到 14 年前
        1
  •  2
  •   tadman    14 年前

    您可以根据需要深入嵌套路由,但请记住,不能因为可以就意味着应该这样做。你挖得越深,你为自己创造的工作就越多。

    我看到的模式是,对于每个深度级别,需要创建一个处理父参数的基本控制器和一个处理细节的子类。这往往是沿着以下思路进行的:

    Customer::BaseController < ApplicationController
    CustomerController < CustomerController:: BaseController
    
    Customer::Orders::BaseController < Customer::BaseController
    Customer::OrdersController < Customer::Orders::BaseController
    
    Customer::Orders::Items::BaseController < Customer::Orders::BaseController
    Customer::Orders::ItemsController < Customer::Orders::Items::BaseController
    

    在每种情况下,BaseController都以通用方式处理参数的加载和解释,例如:

    class Customer::BaseController < ApplicationController
      before_filter :load_customer
    
    protected
      def load_customer
        @customer = Customer.find(params[:customer_id] || params[:id])
      rescue ActiveRecord::RecordNotFound
        render(:partial => 'customer_not_found', :layout => 'application', :status => :not_found)
      end
    end
    

    如您所见,如果您以这种方式规划应用程序,它可能会变得有点复杂。你最终也会走很长的路。

        2
  •  1
  •   Overbryd    14 年前

    但如果你觉得无聊,你应该坐下来想个办法。如果你在做一个真正的项目,它总是最有趣的。 从例子和不真实的场景中学习可能会有一段时间的帮助,但在某个时候是时候接受一些挑战了。

    从理论上讲,你可以试着为你可能进入的每一个“中级”或“高级”情况做好准备。

    老实说,我与问题斗争的方式与书中的任何理论场景都没有关系。我不得不坐下来,跟踪问题,阅读回溯,思考它们,用谷歌搜索类似的问题,编写测试。。。这才是真正帮助我获得经验的原因。

    这会给你动力,你可能正在寻找。

    http://github.com 是查找源代码的好地方;从中学习。

        3
  •  0
  •   nfm    14 年前

    看一看 opensourcerails.com -找到一个你感兴趣的应用程序,获取源代码,然后逐段浏览。在本地运行它,找到有趣的功能,然后进入代码查看它是如何完成的。