2009-03-31 3 views
0

저는 Ruby on Rails에서 몇 가지 것을 개발하고 있으며, 현재 이들 간의 관계가있는 몇 가지 모델이 있습니다. 이제 모델은 관계를 지정하므로 RoR이 무결성을 시행한다는 것을 알고 있지만 DB 수준은 무엇입니까?다른 사람들이 마이그레이션에서 외래 키 관계를 설정하는 방법

다른 사람들이 DB 테이블에서 외래 키 관계를 설정합니까? 만약 그렇다면, 어떻게?/설정에 대한 방법이 될

감사

(어쩌면 원시 SQL을 사용하여) 이전에 DB 관계를 파괴하는 것 같지 않습니다.

답변

2

여기에 그것을 수행하는 방법에 대한 안내입니다 : http://github.com/harukizaemon/foreign_key_migrations/tree/master

그러나, 레일 쉽게 이유 마이그레이션에서 외래 키를 지원하지 않습니다 http://seb.box.re/2006/7/29/foreign-key-and-rails-migration

여기에 대한 플러그인도 있습니다. 기본적으로 ActiveRecord를 사용할 때는 실제로 필요하지 않습니다.

여기가 필요하지 않은 이유에 대한 좋은 설명이고 사용법은 레일에 권장하지 않습니다 : http://www.motionstandingstill.com/i-dont-use-foreign-key-constraints-with-rails/2008-10-17/

의견이 주제에 차이가있다. 여기서 좋은 토론이 있습니다 : http://forum.softiesonrails.com/forums/3/topics/138

0

것을 의미한다 SQL을 사용하여 마이그레이션 짧은에서 할 수있는 방법이 없습니다 :

  1. 그것은 DB-특정 당신은 SQL

를 사용할 필요가

  • 의가 먼저 프로젝트에서 데이터베이스를 얼마나 자주 전환합니까?), 두 번째는 단순히 삶의 사실입니다. 그래서 원한다면 사용하십시오.

  • -1

    덧붙여 이러한 것들은 항상 데이터베이스 수준에서 설정되어야합니다. 응용 프로그램 외에도 데이터베이스의 데이터를 액세스하고 변경하는 다른 f}이 있습니다. 쓸데없는 데이터가 필요하지 않으면 응용 프로그램에서 이러한 유형의 규칙을 설정하지 마십시오. SQL (GASP)을 사용해야하는 경우에도 데이터 무결성에 관련된 모든 것은 데이터베이스 레벨에 있어야합니다.

    +0

    항상 그런 것은 아닙니다. 시나리오에 따라 db에 외래 키를 설정하는 것이 가장 좋은 방법이지만, 필자가 작업 한 대부분의 웹 응용 프로그램에서는 필요하지 않았습니다. 응용 프로그램 수준에서 이러한 비즈니스 규칙을 갖는 것은 많은 의미가 있습니다. –

    관련 문제