ruby-on-rails - 如何克服 Rails 中明显的 REST 与 DRY 困境?

标签 ruby-on-rails database rest dry

我正在开发的一个 Rails 应用程序包含二次方程式的示例。显然,这些都是一个共同的结构:ax^2 + bx + c = 0。

我不想存储其中的每一个示例。我宁愿从模板生成它们。存储此结构的数百个可能版本似乎非常浪费且不干燥。

另一方面,如果我生成它们,我将无法像它们只是多个数据库对象那样可靠地再次访问它们。

我确信一定有办法克服这个问题,但我仍在学习 Rails,显然我没有掌握这里的某些东西。谢谢。

最佳答案

答案是“视情况而定”。如果你只打算做二次方程的例子,那么你可以只存储 a、b 和 c。如果您认为您要计算其他类型的方程式,请存储整个方程式。

真正不应该考虑的是,从浪费磁盘空间的意义上说,存储完整方程是一种“浪费”。除非您要存储数百万个这样的东西,否则不要担心。磁盘很便宜。

其他观点是 YAGNI(Ya Ain't Gonna Need It),它会说根据您现在的情况编写代码,二次方程,不要担心泛化它。如果需要,您可以稍后重构代码和数据。

另一种看待它的方式是 KISS(保持简单,愚蠢)。最简单的事情可能是只存储完整的方程式。这使得检索方程式成为一个简单的数据库提取,不需要代码来生成方程式。

就个人而言,假设您没有做大量此类事情,在这种情况下我更喜欢 KISS。我不相信该系统只会用于二次方程。你可以做的是让系统处理任何方程,但让输入形式采用 a、b 和 c,并将其转换为二次方程。如果您以后需要其他方程类型,更改输入逻辑比更改数据结构简单得多。

关于ruby-on-rails - 如何克服 Rails 中明显的 REST 与 DRY 困境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2563624/

相关文章:

ruby-on-rails - ActiveRecord 序列化问题

ruby-on-rails - 扩展 spree 以具有 Shopify 的功能?

ruby-on-rails - webbrowser 和 rails 之间发生了什么

mysql - SELECT MAX() 与 SELECT 列 ORDER BY 列 DESC LIMIT 1

c# - WEB API & BL关系

node.js - 仅使用一个回调并行运行异步

ruby-on-rails - escape_javascript 和单引号

php - 用php创建数据库

asp.net - 如何在 Sql Server 中插入新行后立即获取新的身份 ID?

java - Spring Rest PostMapping 从 json 映射到多个表