Ruby on Rails - 可重用项选择页面

时间:2015-11-02 14:37:38

标签: ruby-on-rails

我是Ruby on Rails的新手。我已经完成了教程和在线课程。我非常了解开发环境,创建表格,控制器,视图等等。但是,课程和教程并没有真正向您展示在真实的软件开发情况下可能需要处理的事情。 。

我正在将一个软件转换为Ruby on Rails平台。情况就是这样。我有一个拥有销售员信息的推销员控制器。然后我有一个客户端控制器来处理客户端信息。推销员有很多客户,客户有一个推销员。我已经为Salesman对象编写了REST架构。现在,我必须创建客户端。但在我能够在控制器中进行新操作之前,我必须先选择一个推销员。这个选择推销员页面将在许多其他场合需要,因为我将有其他控制器,如佣金,采购订单等必须先与销售员联系。我如何着手编写这样一个"临时选择"实际进入控制器中的新操作之前的页面。我们可以定义自定义操作,然后我将redirect_to重定向到将推销员ID作为参数传递的新操作吗?

1 个答案:

答案 0 :(得分:0)

您需要设计类似于多租户应用的应用。在您的情况下,销售人员就像一个租户。

以下是概念设计:

  1. 将current_id 属性添加到SalesMan cattr_accessor :current_id, instance_writer: false, instance_reader: false

  2. 在属于销售人员的所有模型中,定义默认范围: default_scope { where(sales_man_id: SalesMan.current_id) }

  3. 确保在执行依赖于预先选择销售人员的任何操作之前设置当前销售人员。有多种方法可以实现这一目标,还取决于您希望提供哪种用户体验。几个选项:

    1. 仅在预先选择推销员时才显示新客户端等导航。提供菜单选项以选择推销员。在该操作中设置SalesMan.current_id。

    2. 如果销售员在许多后续交易中不同,您可能希望在行动之前通过控制器实施销售员选择(工作流程的第1步)。例如,当用户选择“新建客户端”导航选项时,“先前”操作可以重定向到销售人员选择并设置标志。 SalesMan控制器选定的操作应重定向到New Client操作,并确保设置正确的标志(参数)以避免循环。定义一个新的控制器SalesManSelectionController并子类化所有模型依赖于业务员的控制器。