[ruby-on-rails] 모델에 특정 열 / 속성이 있는지 확인하는 방법은 무엇입니까?
해시를 반복하고 각 키가 모델 테이블에 있는지 확인해야하는 메서드가 있습니다. 그렇지 않으면 키 / 값이 삭제됩니다.
예를 들면
number_hash = { :one => "one", :two => "two" }
Number 테이블에는 : one 열만 있으므로 : two가 삭제됩니다.
모델에 속성이 있는지 여부를 어떻게 확인합니까?
답변
수업 용
사용은 Class.column_names.include? attr_name
어디에서 attr_name
당신의 속성의 문자열 이름입니다.
이 경우 : Number.column_names.include? 'one'
예를 들어
사용 record.has_attribute?(:attr_name)
또는 record.has_attribute?('attr_name')
(레일 3.2 이상) 또는 record.attributes.has_key? attr_name
.
이 경우 : number.has_attribute?(:one)
또는 number.has_attribute?('one')
또는number.attributes.has_key? 'one'
답변
별칭도 확인해야하는 경우 Number.method_defined? attr_name
또는number.class.method_defined? attr_name
.
별칭 필드가있는 Mongoid 개체에 대해이 작업을 수행해야했습니다.
답변
인스턴스 객체에서 defined? instance.attribute
또는 instance.respond_to? :attribute
.
이들은 모델 속성 또는 모든 방법을 확인하는보다 일반적인 솔루션입니다.