Rails .where 대 .find
메서드가 아닌 Model.where
결과가 하나 뿐인 경우에도 메서드가 항상 배열을 반환 한다는 것을 알았습니다 Model.find
. 이것에 대한 이유가 있습니까? Model.where
Rails 3.X부터 선호하는 기능 이라고 생각 했습니다.
Model.find
단일 결과를 Model.where
기대할 때 와 둘 이상의 결과를 기대할 때 사용해야합니까 ?
where
모델 객체ActiveRecord::Relation
의 컬렉션 인 (배열이 아닌 배열)을 반환 합니다. 조건과 일치하는 것이 없으면 단순히 빈 관계를 반환합니다.find
(및 관련 동적find_by_columnname
메서드)는 단일 모델 개체를 반환 합니다. 아무것도 발견ActiveRecord::RecordNotFound
되지 않으면 예외가 발생합니다 (동적find_by_
메서드 에서는 제외됨 ).find
ID 목록이 주어지면 Relation이 아닌 레코드 배열을 반환 할 수 있지만 ,where
Rails 3부터 사용하는 것이 선호find
됩니다. 이제 많은 유사한 용도 가 더 이상 사용되지 않거나 완전히 사라졌습니다 .
예, 단일 객체 만 원하고 기대하는 경우 사용하는 find
것이 더 쉽습니다 Model.where.first
. 그렇지 않으면을 호출해야합니다 .
이전 스타일의 해시 옵션 find
및 많은 동적 find_
메서드는 Rails 4.0에서 더 이상 사용되지 않습니다 ( 관련 릴리스 노트 참조 ).
실제로 얻은 find_by
모델 객체를 가져옵니다.where
ActiveRecord::Relation
def find_by(*args)
where(*args).take
end
Model.find
기본 키 열을 사용하고 있습니다. 따라서 항상 정확히 하나의 결과가 있습니다. ID로 식별되는 특정 요소를 찾을 때 사용하십시오.
참고 URL : https://stackoverflow.com/questions/9574659/rails-where-vs-find
'Program Tip' 카테고리의 다른 글
R에 "붙여 넣기"로 변수 이름을 만드시겠습니까? (0) | 2020.10.21 |
---|---|
Nginx를 사용한 WSGI 대 uWSGi (0) | 2020.10.21 |
java.sql.Timestamp 시간대는 특정입니까? (0) | 2020.10.21 |
for 루프를 사용하고 값을 전달하는 addEventListener (0) | 2020.10.21 |
iOS / OSX 프레임 워크 생성 : 다른 개발자에게 배포하기 전에 코드 서명이 필요합니까? (0) | 2020.10.21 |