Pergunta

Eu tenho vindo a desenvolver aplicações web para um tempo e estou bastante confortável com o MySQL, na verdade, como muitos fazem i usar alguma forma de SQL quase todos os dias. Eu gosto da sintaxe e um ter zero problemas escrever consultas ou otimizar minhas tabelas. Eu apreciei este mysql api .

A única coisa que foi me incomodando é Ruby on Rails usa ActiveRecord e migra tudo para que você use funções para consultar o banco de dados. Suponho que a ideia é que você "nunca tem que olhar para SQL novamente". Talvez isso não é KISS (Keep it simple stupid), mas é a interface ActiveRecord realmente melhor? Se assim por que?

É o desenvolvimento sem ter que sempre escrever uma instrução SQL saudável? E se você sempre tem que procurar alguma coisa que ainda não está definido como um trilhos função? Eu sei que eles têm uma função que me permite fazer uma consulta personalizada. Eu acho que realmente eu quero saber o que as pessoas pensam as vantagens são de usar ActiveRecord sobre mySQL e se alguém se sente como me que talvez isso seria para a comunidade que a calculadora era para a comunidade matemática trilhos e algumas pessoas podem esquecer como fazer longa divisão.

Foi útil?

Solução

Você está certo de que esconder o SQL trás meios de camada povo de ActiveRecord pode esquecer de verificar o SQL gerado. Fui mordido por isso mesmo:. Índices ausentes, consultas ineficientes, etc

O que ActiveRecord permite que está fazendo as coisas fáceis fácil:

Post.find(1)

vs

SELECT * FROM posts WHERE posts.id = 1

Você, o desenvolvedor, têm menos a tipo, e, portanto, têm menos chances de erro.

A validação é uma outra coisa que ActiveRecord torna fácil. Você tem que fazer isso de qualquer maneira, então porque não têm uma maneira fácil de fazê-lo? Com o repetitivo, chato, peças abstraída fora?

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

Mais uma vez, fácil de especificar, fácil para validar. Quer mais de validação? Uma única linha para adicionar a um modelo ActiveRecord. código complicado com múltiplas condições é sempre mais difícil para depurar e teste. Por que não torná-lo fácil para você?

A coisa que eu final, realmente gosto sobre ActiveRecord em vez de SQL são chamadas de retorno. Retornos de chamada pode ser emulado com gatilhos de SQL (que só estão disponíveis no MySQL 5.0 ou superior), enquanto ActiveRecord teve retornos de chamada desde caminho de volta, em seguida, (I começou em 0,13).

Para resumir:

  • ActiveRecord torna as coisas fáceis fácil;
  • ActiveRecord remove o chato, peças repetitivas;
  • ActiveRecord não impedi-lo de escrever o seu próprio SQL ( geralmente por razões de desempenho) e, finalmente;
  • ActiveRecord é totalmente portátil accross a maioria dos motores de banco de dados, enquanto o próprio SQL não é (por vezes).

Eu sei que no seu caso, você está falando especificamente sobre MySQL, mas ainda assim. Tendo a opção é bom.

Outras dicas

A idéia aqui é que, colocando sua lógica DB dentro de seus registos activos, você está lidando com código SQL em um só lugar, em vez de espalhar por todo o seu pedido. Isto torna mais fácil para as várias camadas de sua aplicação a seguir a responsabilidade única Princípio (que um objeto deve ter apenas uma razão para mudança).

Aqui está um artigo sobre o padrão Active Record .

Evitando SQL ajuda quando você decidir mudar o esquema de banco de dados. A abstração também é necessário para todos os tipos de coisas, como validação. Eu não significa que você não começa a gravação SQL: você sempre pode fazer isso se você sentir a necessidade para ele. Mas você não tem que escrever uma consulta 5 linha onde tudo que você precisa é user.save. É a filosofia trilhos para evitar código desnecessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top