1

可以用业务逻辑这个词来描述:

控制最终用户可以使用哪些数据的帐户角色(管理员、最终用户、未注册用户、版主)?

如果没有,有人可以提供一个术语来描述上述情况,并纠正我的业务逻辑的确切含义吗?它与业务规则有何不同?例子?你会把业务逻辑层放在 Rails/RoR 的控制器中吗?

4

4 回答 4

5

您所说的是基于角色的访问控制,它是一种业务逻辑。

业务逻辑是调用模型时执行的操作。业务逻辑在模型中,而不是控制器中。

于 2011-06-03T17:13:21.897 回答
2

业务逻辑是编写应用程序所有控制语句的应用程序层。例如,您有一个简单的在线售票应用程序。现在,当您开发应用程序时,您需要实施一些逻辑来销售门票,例如预订日期不应该是假期。因此,您不会出售假期门票的这条规则只不过是一种业务逻辑。有关详细信息,请参阅此站点 http://en.wikipedia.org/wiki/Business_logic

于 2011-06-03T17:12:39.753 回答
2

基本思想是让你的控制器尽可能的薄。大多数情况下,这意味着控制器接受来自网络的数据,并在视图中设置所需的变量,然后选择视图。

确定角色、管理员等的过程是向模型提出的问题……可能类似于用户或角色等。如何确定的逻辑在模型中。控制器与此信息协调以选择视图或在不允许时重定向等。

有时我发现自己在一个控制器中,做一个复杂的查询来获取一组记录。这是一种代码异味,我需要接受该查询并在模型中的某个地方创建范围或方法。

如果您发现自己在模型上链接了很多调用,则可能是时候将其移至模型了。如果您发现自己打开了大量记录、做出决策并更新记录,那么可能是时候转向模型了。

如果需要决定向用户显示什么视图(或者是否显示它!),控制器就可以了。

于 2011-06-03T21:32:34.870 回答
0

对我而言,业务逻辑意味着您需要在 Ruby 中实现的任何特定业务流程。

例如,如果您有一个供人们购买门票的网站,您可能有一个业务流程:“在活动当天,用户只能购买一张门票,之后他最多可以购买 5 张门票,如果门票是仍然可用”。所以你必须用 Ruby 来编写它——它是实现业务规则的 Ruby 代码。

相反,在同一系统中,您可能有将票证拆分为 PDF 的代码。我不会考虑“业务逻辑”,因为它不是业务工作流程规则……是的,将票据打印为 PDF 具有商业价值,但这与业务流程如何工作(或应该如何工作)启用的工作流程无关它是为了更好地为客户服务。

只买一张票的规则在哪里?这是该特定业务的策略,业务规则。

正如@Vinnyq12 指出的那样,您的示例更像是访问控制描述......您可以说这可能是一种业务逻辑,是的。

于 2011-06-03T17:39:13.080 回答