복붙노트

[RUBY-ON-RAILS] 레일 - 협회의 유효성 존재를?

RUBY-ON-RAILS

레일 - 협회의 유효성 존재를?

나는 내가이에 삽입이 확실 이것이 사실인지 확인하기 위해 호출 할 수있는 방법이 있습니까 B.에 적어도 한 관련 기록을 필요로하는 비즈니스 요구 사항이 다른 모델 B.에 "has_many"관계를 가진 모델 A를 가지고 아니면 사용자 지정 유효성 검사를 작성해야합니까?

해결법

  1. ==============================

    1.당신은 validates_presence_of http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates_presence_of 사용할 수 있습니다

    당신은 validates_presence_of http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates_presence_of 사용할 수 있습니다

    class A < ActiveRecord::Base
      has_many :bs
      validates_presence_of :bs
    end
    

    또는 단지의 유효성을 검사 http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates

    class A < ActiveRecord::Base
      has_many :bs
      validates :bs, :presence => true
    end
    

    allow_destroy => 사실 : 중첩 된 모델과 부모 검증 당신이 accepts_nested_attributes_for 사용하지만 그것으로 버그가있다. 이 항목에서는 당신은 해결책을 찾을 수 있습니다.

  2. ==============================

    2.-------- 4 레일 ------------

    -------- 4 레일 ------------

    간단한 유효성을 검사의 존재는 나를 위해 일한

    class Profile < ActiveRecord::Base
      belongs_to :user
    
      validates :user, presence: true
    end
    
    class User < ActiveRecord::Base
      has_one :profile
    end
    

    이 방법 Profile.create 지금은 실패합니다. 나는 user.create_profile 사용하거나 프로파일을 저장하기 전에 사용자를 연결해야합니다.

  3. ==============================

    3.당신은 validates_existence_of와 연결을 (어떤이 플러그인입니다) 유효성을 검사 할 수 있습니다 :

    당신은 validates_existence_of와 연결을 (어떤이 플러그인입니다) 유효성을 검사 할 수 있습니다 :

    예이 블로그 항목에서 니펫을 :

    class Tagging < ActiveRecord::Base
      belongs_to :tag
      belongs_to :taggable, :polymorphic => true
      validates_existence_of :tag, :taggable
    
      belongs_to :user
      validates_existence_of :user, :allow_nil => true
    end
    

    또는, validates_associated 사용할 수 있습니다. 관련 객체가 연관된 클래스의 유효성 검사를 실행하여 유효한지 답은 아래 코멘트에 파이 노트로, 검사를 validates_associated. 그것은 존재를 확인하지 않습니다. 그것은 전무 협회가 유효한 것으로 간주되는 점에 유의하는 것도 중요합니다.

  4. ==============================

    4.당신은 협회가 현재와 유효 보장, 당신은 또한 사용할 필요가 모두 있는지 확인하려면

    당신은 협회가 현재와 유효 보장, 당신은 또한 사용할 필요가 모두 있는지 확인하려면

    class Transaction < ActiveRecord::Base
      belongs_to :bank
    
      validates_associated :bank
      validates :bank, presence: true
    end
    
  5. from https://stackoverflow.com/questions/5689888/rails-validate-presence-of-association by cc-by-sa and MIT license