2016-08-06 3 views
1

존재하지 않을 경우 예외를 throw하는 방법을, 나는 두 가지 모델이있다. 존재하지 않는 제품 ID를 사용하려고 시도했으며 product_id 열은 null입니다. 이런 식으로 삽입 할 때 예외를 던지고 싶습니다.액티브는 : 참조 키를 예를 들어

삽입하기 전에 해당 필드를 확인하기 위해 모델에 validate을 사용하는 방법이 있습니다. 하지만 클라이언트가 그렇게하지 않기 때문에 시간이 많이 걸릴 것이라고 생각합니다. (아이템을 많이 넣기 때문에) 정말 필요하지 않습니다. (다만 실제로 무언가가 잘못되었을 경우를 대비해서).

답변

1

foreign_key 참조를 마이그레이션에 추가하면 모든 것이 완벽하게 작동하므로 관계형 데이터베이스의 이점 중 하나입니다. 장소에있는 존재하지 않는 제품이 실패 저장하는 모든 시도를

class AddForeignKeyToCheckInDetails < AR::Migration 
    def change 
    remove_foreign_key :check_in_details, :products 
    add_foreign_key :check_in_details, :products, dependent: :delete 
    end 
end 

: 당신은 이전에 rails g migration add_foreign_key_to_check_in_details

로 마이그레이션을 실행할 수 있습니다, 당신은 뭔가를 추가해야합니다. product_id 컬럼에 NOT NULL 제한 조건을 추가해야합니다. check_in_detail을 null product_id와 함 2 저장하려고하면 성공할 것입니다. 이전에 대한 업데이트는 다음과 같습니다.

change_column :check_in_details, :product_id, :integer, null: false 

질문에 대한 답변을 알려주세요.

+0

하나만 작동 할 수 있습니다. 우리 둘 다 할 필요가 있니? 감사. –

+0

모두? 열과 add_reference를 변경하려고합니다. 예 (reference)를 추가하는 것은 가능하지만'nil' product_id로 제출을 막을 수는 없습니다. – oreoluwa

+0

아. 이해 했어. 네 친절한 설명에 너무 감사드립니다. D –