可以用业务逻辑这个词来描述:
控制最终用户可以使用哪些数据的帐户角色(管理员、最终用户、未注册用户、版主)?
如果没有,有人可以提供一个术语来描述上述情况,并纠正我的业务逻辑的确切含义吗?它与业务规则有何不同?例子?你会把业务逻辑层放在 Rails/RoR 的控制器中吗?
可以用业务逻辑这个词来描述:
控制最终用户可以使用哪些数据的帐户角色(管理员、最终用户、未注册用户、版主)?
如果没有,有人可以提供一个术语来描述上述情况,并纠正我的业务逻辑的确切含义吗?它与业务规则有何不同?例子?你会把业务逻辑层放在 Rails/RoR 的控制器中吗?
您所说的是基于角色的访问控制,它是一种业务逻辑。
业务逻辑是调用模型时执行的操作。业务逻辑在模型中,而不是控制器中。
业务逻辑是编写应用程序所有控制语句的应用程序层。例如,您有一个简单的在线售票应用程序。现在,当您开发应用程序时,您需要实施一些逻辑来销售门票,例如预订日期不应该是假期。因此,您不会出售假期门票的这条规则只不过是一种业务逻辑。有关详细信息,请参阅此站点 http://en.wikipedia.org/wiki/Business_logic
基本思想是让你的控制器尽可能的薄。大多数情况下,这意味着控制器接受来自网络的数据,并在视图中设置所需的变量,然后选择视图。
确定角色、管理员等的过程是向模型提出的问题……可能类似于用户或角色等。如何确定的逻辑在模型中。控制器与此信息协调以选择视图或在不允许时重定向等。
有时我发现自己在一个控制器中,做一个复杂的查询来获取一组记录。这是一种代码异味,我需要接受该查询并在模型中的某个地方创建范围或方法。
如果您发现自己在模型上链接了很多调用,则可能是时候将其移至模型了。如果您发现自己打开了大量记录、做出决策并更新记录,那么可能是时候转向模型了。
如果需要决定向用户显示什么视图(或者是否显示它!),控制器就可以了。
对我而言,业务逻辑意味着您需要在 Ruby 中实现的任何特定业务流程。
例如,如果您有一个供人们购买门票的网站,您可能有一个业务流程:“在活动当天,用户只能购买一张门票,之后他最多可以购买 5 张门票,如果门票是仍然可用”。所以你必须用 Ruby 来编写它——它是实现业务规则的 Ruby 代码。
相反,在同一系统中,您可能有将票证拆分为 PDF 的代码。我不会考虑“业务逻辑”,因为它不是业务工作流程规则……是的,将票据打印为 PDF 具有商业价值,但这与业务流程如何工作(或应该如何工作)启用的工作流程无关它是为了更好地为客户服务。
只买一张票的规则在哪里?这是该特定业务的策略,业务规则。
正如@Vinnyq12 指出的那样,您的示例更像是访问控制描述......您可以说这可能是一种业务逻辑,是的。