Rails 中的业务逻辑在哪里?

2024-01-02

我是一名 ASP.NET MVC 开发人员,刚刚开始我的第一个 Rails 大型项目,但是我很困惑将业务逻辑放在哪里?在 ASP.NET 上,我创建了一个包含处理业务逻辑的服务(域驱动设计)的库,我听说 Rails 使用胖模型瘦控制器的概念,但我在 ASP.NET 中有一些项目,它们将所有逻辑添加到控制器会造成很大的混乱,还有其他方法吗?


遵循 FatModels 和 SkinnyControllers 的概念。你的模型应该知道他们的行为方式以及他们应该做什么。

当你的模型变得太胖时,将它们提取到可重用的模块中,并将它们包含在你的模块中。

  • 采用胖控制器(带有逻辑)并转移到模型的示例 http://www.therailsway.com/2007/6/1/railsconf-recap-skinny-controllers
  • 从视图中获取代码并移入模型的示例 http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model

您可以使用 RSpec(或 test/unit 或 Shoulda)轻松测试模型的行为。然后您可以使用 Cucumber 测试应用程序的行为是否正确。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 中的业务逻辑在哪里? 的相关文章

随机推荐

  • 监听多个事件

    如何在事件驱动架构中处理相关事件 具体来说 如果必须触发多个事件才能执行某些操作怎么办 例如 我有一个监听两个事件的微服务foo and bar并且仅当两个事件到达并且具有相同的相关 ID 时才执行操作 一种方法是在微服务内部保留一个内部数
  • 如何使用 PHP/HTML 保持空白格式?

    我正在解析文件中的文本并将其存储在字符串中 问题是原始文件中的某些文本包含ASCII art以及我想保留的东西 当我打印出字符串HTML page 即使它确实具有相同的格式和所有内容 因为它是HTML 不保留间距和换行符 打印文本的最佳方式
  • 在反应路由器中刷新时出现空白页面

    当我从 home 导航到 dashboard 时 路由器工作正常 但是当我从 home 导航到 profile id 时 路由器将我导航到也工作正常的配置文件页面 但是当我刷新它时 它会变成空白页面并且没有给我任何 404 或重定向回主页
  • Zend 表单编辑和 Zend_Validate_Db_NoRecordExists

    我正在通过构建一些供我自己使用的实用程序网站来慢慢增强我的 Zend 技能 我一直在使用 Zend Forms 和表单验证 到目前为止 我很高兴我已经了解了 Zend 的做事方式 然而 我对如何在编辑表单和映射到必须唯一的数据库列的字段的上
  • Cocoapods ld:找不到 -lPods-Projectname 的库

    我已经通过它安装了 cocoa pods 库和一些框架 现在 当我编译项目时 构建失败 错误 ld 找不到 lPods Project 的库 clang 错误 链接器命令失败 退出代码为 1 使用 v 查看调用 这里是部分文字 Ld Use
  • Expressjs:搜索查询 api

    我想使用查询字符串搜索我的用户存储库 这应该返回具有相似用户名 kyogron 和相似电子邮件 kyogron gmail 的所有用户 GET localhost 3000 users username kyogron email prot
  • 运行异步代码的 Windows 服务不等待工作完成

    In Brief 我有一个 Windows 服务 它可以并行执行多个作业作为异步任务 然而 当 OnStop 被调用时 似乎这些都被立即终止 而不是被允许以更优雅的方式停止 更详细 每个作业都代表工作的迭代 因此完成工作后 该作业需要再次运
  • 无法安装分发配置文件

    我想向 AppStore 提交一个应用程序 我的第一个应用程序 我已经在我的设备中测试了该应用程序 因此我已经有了开发配置文件 但我无法在 Xcode 中安装分发配置文件 我已按照该过程操作 我不知道多少次 但是当我尝试通过管理器添加配置文
  • 如何避免 Struts2 验证

    我有一个index jsp我从中调用一个动作类TestAction 单击超链接 其中有方法 显示 从数据库加载组合框的值以及执行方法 以显示在页面上test jsp On test jsp 我有一些输入字段和组合框 单击 test jsp
  • PHP 中单引号和双引号字符串有什么区别?

    我有点困惑为什么我在 PHP 中看到一些代码 其中的字符串放在单引号中 有时放在双引号中 我只知道在 NET或者C语言中 如果它是在单引号中 那就意味着它是一个字符 而不是一个字符串 Answer recommended by PHP co
  • 如何查明“svn up”是否成功完成?

    I run sudo svn username radek update codebase force 每天晚上在自动化测试开始之前从我的 php 脚本 在 SuSE 上 获取 因此 测试是在今天签入的最新代码上完成的 我怎么能确定知道sv
  • Gradle 无法解决 Android Studio 中的依赖关系

    我在 Android Studio 中导入了一个 Phonegap 项目 并将其设为基于 Gradle 的项目 现在我正在尝试编译一些外部依赖项 但出现此错误 错误 72 13 无法解析 com loopj android android
  • 类型“typeof“http””上不存在属性“服务器”

    我知道var someModule require someModule 一般被替换为import as someModule from someModule 但我不知道如何使用 Typescript ES6 语法来表达以下 Node js
  • 在 C# 中重置 IronScheme 引擎

    有没有办法 重置 IronScheme 引擎 我的本质目标是确保对 string Eval 的连续调用是独立执行的 例如 我想被执行 define x 1 0 x 5 0 Eval 然后重置并通话 x 3 0 Eval 失败就像它自己执行一
  • 使用 IE 11 的 Angular 4 应用程序“无法从释放的脚本执行代码”

    我有一个 Angular 应用程序 我认为它是版本 4 IE 11 在此应用程序中的登录序列期间崩溃 无法从释放的脚本执行代码 根据 IE 控制台 错误发生在 polyfills 包的第 10939 行 var testString del
  • C++ 中结构的奇怪行为 [第 1 部分]

    考虑 struct box int array 3 int main box a 1 如果上面的代码在 C 中有效 那么为什么下面的代码不起作用 struct box int simple int int main box b 2 是什么原
  • Android构建工具1.1.0,单元测试文件夹?

    我最近在我的 android 项目中安装了来自 google 的最新工具 buildscript repositories jcenter mavenCentral dependencies classpath com android to
  • 是什么触发为 AWS Lambda 访问 VPC 资源创建 ENI

    我们部署了多个 lambda 可以使用以下方式访问我们的 VPC VpcConfig环境 据我了解 AWS Lambda 通常会按需创建 lambda 但如果您将它们连接到您的 VPC 那么 AWS 将 在某些时候 在指定的子网之一上创建
  • 在 Windows 10 中使用 WPF 对大写单词进行拼写检查

    我有一个 WPF 应用程序 其中有一些文本框CharacterCasing CharacterCasing Upper也SpellCheck IsEnabled true 在 Windows 7 中 这工作正常 但在 Windows 10
  • Rails 中的业务逻辑在哪里?

    我是一名 ASP NET MVC 开发人员 刚刚开始我的第一个 Rails 大型项目 但是我很困惑将业务逻辑放在哪里 在 ASP NET 上 我创建了一个包含处理业务逻辑的服务 域驱动设计 的库 我听说 Rails 使用胖模型瘦控制器的概念