Nice programing

ActiveRecord where field =?

nicepro 2020. 11. 26. 19:53
반응형

ActiveRecord where field =? 가능한 값의 배열


나하고 싶어

Model.where('id = ?', [array of values])

OR 문을 함께 연결하지 않고이 조회를 수행하려면 어떻게해야합니까?


에서 여기 SQL을 사용하여 수행 할 것으로 보인다 in문을 :

Model.where('id IN (?)', [array of values])

또는 더 간단하게 kdeisz가 지적했듯이 (Arel을 사용하여 SQL 쿼리 생성) :

Model.where(id: [array of values])

로부터 액티브 쿼리 인터페이스 가이드

IN 표현식을 사용하여 레코드를 찾으려면 배열을 조건 해시에 전달할 수 있습니다.

Client.where(orders_count: [1,3,5])

가독성을 위해 다음과 같이 더욱 단순화 할 수 있습니다.

Model.find_by(id: [array of values])

이것은를 사용하는 것과 동일 where하지만 더 명시 적입니다.

Model.where(id: [array of values])

mongoid에서 쿼리를 찾고 있다면 이것이 바로Model.where(:field.in => ["value1", "value2"] ).all.to_a


wherefind_by 사이 에는 '작은'차이가 있습니다.

find_by 는 발견 된 경우 하나의 레코드 만 반환합니다. 그렇지 않으면 nil이됩니다.

지정된 조건과 일치하는 첫 번째 레코드를 찾습니다. 묵시적 주문이 없으므로 주문이 중요한 경우 직접 지정해야합니다. 레코드가 없으면 nil을 반환합니다.

  def find_by(*args)
      where(*args).take
    rescue RangeError
      nil
  end

한편 그것이 관계를 반환합니다

인수의 조건에 따라 현재 관계를 필터링 한 결과 인 새 관계를 반환합니다.

따라서 귀하의 상황에서 적절한 코드는 다음과 같습니다.

Model.where(id: [array of values])

참고 URL : https://stackoverflow.com/questions/28954500/activerecord-where-field-array-of-possible-values

반응형