gpt4 book ai didi

mysql - 为什么使用 ActiveRecord 而不是 MySql API

转载 作者:行者123 更新时间:2023-11-29 01:48:18 25 4
gpt4 key购买 nike

我开发 Web 应用程序已经有一段时间了,我对 mySql 非常熟悉,事实上,我几乎每天都使用某种形式的 SQL。我喜欢语法,并且在编写查询或优化我的表时遇到零问题。我很喜欢这个 mysql api .

一直困扰我的是 Ruby on Rails 使用 ActiveRecord 并迁移所有内容,因此您可以使用函数来查询数据库。我想这个想法是你“永远不必再看 SQL”。也许这不是 KISS(保持简单愚蠢),但 ActiveRecord 接口(interface)真的是最好的吗?如果是,为什么?

无需编写 SQL 语句的开发是否健康?如果您需要查找尚未定义为 Rails 函数的内容怎么办?我知道他们有一个功能可以让我进行自定义查询。我想我真的很想知道人们认为使用 ActiveRecord 而不是 mySQL 的优势是什么,如果有人像我一样觉得这对 Rails 社区来说可能就像计算器对数学社区一样,有些人可能会忘记如何做 long split 。

最佳答案

您说得对,将 SQL 隐藏在 ActiveRecord 层之后意味着人们可能会忘记检查生成的 SQL。我自己也被这个困扰过:缺少索引、查询效率低下等。

ActiveRecord 让简单的事情变得简单:

Post.find(1)

对比

SELECT * FROM posts WHERE posts.id = 1

作为开发者,您需要输入的内容更少,因此出错的机会更少。

验证是 ActiveRecord 简化的另一件事。无论如何你都必须这样做,那么为什么不找一个简单的方法呢?将重复、枯燥、抽象的部分抽象出来?

class Post < ActiveRecord::Base
validates_presence_of :title
validates_length_of :title, :maximum => 80
end

对比

if params[:post][:title].blank? then
# complain
elsif params[:post][:title].length > 80 then
# complain again
end

同样,易于指定,易于验证。想要更多验证?添加到 ActiveRecord 模型的单行。具有多个条件的复杂代码总是更难调试和测试。为什么不让你轻松一点?

我真正喜欢 ActiveRecord 而不是 SQL 的最后一点是回调。可以使用 SQL 触发器(仅在 MySQL 5.0 或更高版本中可用)模拟回调,而 ActiveRecord 从那时起就有回调(我从 0.13 开始)。

总结:

  • ActiveRecord 让简单的事情变得简单;
  • ActiveRecord 删除了无聊、重复的部分;
  • ActiveRecord 不会阻止您 writing your own SQL (通常出于性能原因),最后;
  • ActiveRecord 可跨大多数数据库引擎完全移植,而 SQL 本身(有时)则不然。

我知道在你的情况下你是在专门谈论 MySQL,但仍然如此。有选择很好。

关于mysql - 为什么使用 ActiveRecord 而不是 MySql API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/161108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com