我已经发展网络的应用的同时,我非常舒适的有mySql,事实上许多做我使用一些形式的SQL几乎每天都有。我喜欢我的语法和有零问题编写查询或优化我表。我喜欢这个mysql api.

这件事已经困扰我是红宝石在轨道上使用Email和迁移的一切所以你使用功能以查询该数据库。我想的想法是你"从来没有看SQL一次"。也许这不是个吻(把它简单笨)但是Email接口,真的很好的?如果是这样为什么?

就是发展,而无需写SQL statement健康吗?什么如果你有没有看一些东西,是不是已经定义为一个轨道的功能?我知道他们有一个功能,允许我做个自定义的查询。我猜我真的想知道人们怎么想的优点是使用Email了mySQL如果任何人感觉就像我,这可能会为轨社会什么样的计算方法是为数学的社区和一些人可能会忘记如何做到长除法.

有帮助吗?

解决方案

你是对的,隐藏SQL后Email的层意味着人们可能会忘记检查所产生的SQL。我已经咬了这个我自己:缺失的索引,低效率的查询,等等。

什么Email允许做的容易容易的事情:

Post.find(1)

vs

SELECT * FROM posts WHERE posts.id = 1

你的开发,具有小型的,因而较少有机会用于错误。

验证是另一回事,Email使得容易。你必须这样做,无论如何,那么,为什么没有一个简单的方法来做到这一点?与重复性的、无聊的部分抽象出来吗?

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

vs

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

再次,容易指定、便于验证。想要更多的验证?一个单一的线添加到Email模型。令人费解的代码有多个条件总是难以调试和测试。为什么不让它很容易吗?

最后的事情我真的很喜欢Email而不是SQL回调。回调可以效仿SQL触(这是唯一可在MySQL5.0或以上),而Email了回来路上,然后(我开始在0.13).

以总结:

  • Email使得容易的事情容易;
  • Email消除无聊的、重复的部分;
  • Email不阻止你 写你自己的SQL (通常为性能的原因),最后;
  • Email是充分的便携式进行的跨大多数数据库引擎,同时SQL本身不是(有时).

我知道你的情况,你都讲MySQL,但仍。具有选择是很好的。

其他提示

这里的想法是,通过将您的数据库逻辑放在Active Records中,您可以在一个地方处理SQL代码,而不是遍布整个应用程序。这使您的应用程序的各个层更容易遵循单一责任原则(一个对象应该只有一个原因需要更改)。

以下是有关Active Record模式的文章

当您决定更改数据库方案时,避免使用SQL可以帮助您。抽象对于各种事物也是必要的,例如验证。我并不是说你不会写SQL:如果你觉得有必要的话,你总是可以这样做。但是您不必编写5行查询,只需要user.save即可。这是避免不必要的代码的rails哲学。

scroll top