gpt4 book ai didi

ruby-on-rails - Rails 模型可以有多复杂?样本项目?

转载 作者:行者123 更新时间:2023-12-04 06:31:01 25 4
gpt4 key购买 nike

我正试图通过 Rails 的初学者阶段并进入中级,但我发现很难找到更高级的示例来学习。

例如,我读到过您需要小心“嵌套路由”并且不应超过 2 层。在这种情况下会发生什么?

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

对于 Rails 来说,这是一件傻事还是一件简单的事情。我假设是后者,但找不到任何有趣的示例项目(源)可供学习?书籍似乎止步于基础……想法?

最佳答案

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

我看到的模式是,对于每个深度级别,您都需要创建一个处理父参数的基本 Controller 和一个处理细节的子类。这往往会按照以下方式进行:

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

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

如果您的数据库被设计成记录是相当自主的,并且可以从中推断出很多关系信息,那么您就不必费心了。订单页面可以提供指向@order.customer 的链接,而无需在路径中包含 customer_id。

关于ruby-on-rails - Rails 模型可以有多复杂?样本项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3365955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com