[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.
이들은 모델 속성 또는 모든 방법을 확인하는보다 일반적인 솔루션입니다.


답변