문제

다음 표에 모델 레벨 검증을하고 싶습니다.

create_table :audios do |t|
  t.integer :library_id, :null => false
  t.string :file, :null => false, :limit => 2048
  t.string :name, :limit => 512
  t.timestamps
end

이것은 (지금까지) 내 모델이 다음과 같은 모습을 의미합니까?

class Audio < ActiveRecord::Base
  belongs_to :library
end

가지다

class Audio < ActiveRecord::Base
  validates_presence_of :library
  ...

또는

class Audio < ActiveRecord::Base
  validates_presence_of :library_id
  ...

?

도움이 되었습니까?

해결책

협회의 존재를 확인하려면 이름을 사용하십시오. 없이 _id 추가 :

validates_presence_of :library

두 가지를 검증합니다.

  1. library_id 존재합니다
  2. Library 주어진 id 존재합니다

사용 validates_presence_of :library_id 두 사람의 첫 번째 검증 만 제공합니다.

이 외에도 버전이없는 버전 _id 두 레코드가 모두 새로 사용되는 경우에도 올바르게 검증됩니다 (따라서 library_id 아직 없다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top