JavaFree.org | RubyOnBr.org

Criar FK física via Migration - Tem como?

Acompanhar Criar FK física via Migration - Tem como? 10 posts, 4 participantes

A013c064de659bbff814eb1f4410446b?s=80 Clovis 783 posts

Bem, querendo preservar a integridade de um banco de dados, caso o mesmo fosse acesso fora da aplicação rails, eu gostaria que por exemplo de criar as FKs entre as tabelas via migration….

Tem como ???

No momento que eu crio as tabelas no migration, eu ja crio uma FK para outra tabela, da pra fazer isso direto da migration ?

 
202667 Henrique C. Alves 53 posts

http://www.redhillonrails.org/#foreign_key_migrations

Talvez precise algum trabalho para o Rails 2.0

 
A013c064de659bbff814eb1f4410446b?s=80 Clovis 783 posts

eh pelo visto nativamente, acho que nao tem não… vou dar uma olhada neste plugin mais tarde… Obrigado Henrique!

:)

 
202667 Henrique C. Alves 53 posts

Ah sim… que eu saiba, não existe um modo nativo. E isso é uma decisão dos mantenedores do Rails (não sei exatamente de quem), de que a integridade do banco deve ser mantida pela aplicação, e não pelo banco. Eu também acho isso horrível, e já foi motivo para várias discussões no passado.

 
Avatar Ronie Uliana 891 posts

Isso aí é pq o pessoal usa MySQL como servidor padrão, que não tem FKs (até onde lembro). Dá uma olhada no Adapter do Postgres… se bem lembro tinha algo pra isso e usar no migration era bem simples. Mas posso estar errado, faz tempo q vi isso.

 
202667 Henrique C. Alves 53 posts

É verdade Ronie, o motivo era o MySQL mesmo.

MySQL tem suporte à FK sim, mas depende da engine usada. Até uma certa versão (e quando começaram o Rails), MySQL só tinha uma engine – MyISAM – que não suportava FK.

 
A013c064de659bbff814eb1f4410446b?s=80 Clovis 783 posts

Hoje eu uso como padrão InnoDB.. e creio que ja fiz algumas FKs por lá…

:D

 
Avatar Stclara 188 posts

Pessoal, tenho usado assim:

 
Avatar Ronie Uliana 891 posts

Posta esse código no Refactor and DRY que garanto que vão aparecer sugestões :D

Q BD vc tá usando?

 
Avatar Stclara 188 posts

To usando mysql e postgres com Rails 1.2.6. Tá funcionando com os dois.