IT

ActiveRecord는 선택한 열을 찾아서 만 반환합니다.

lottoking 2020. 9. 17. 08:08
반응형

ActiveRecord는 선택한 열을 찾아서 만 반환합니다.


편집 2

관리자 우연히 발견하면 이제 두 개의 답변을 사용하여 확인하십시오.


json으로 반향되기 위해 반환하고 싶은 상당히 큰 사용자 지정 데이터 세트가 있습니다. 한 부분은 다음과 가변합니다.

l=Location.find(row.id)
tmp[row.id]=l

하지만 다음과 같이하고 싶습니다.

l=Location.find(row.id).select("name, website, city")
tmp[row.id]=l

그러나 작동하지 않는 것입니다. 이 작업을 어떻게 수행합니까?

고마워

편집 1
또는 내가 포함하려는 속성의 배열 만있는 수있는 방법이 있습니까?


Rails 2에서

l = Location.find(:id => id, :select => "name, website, city", :limit => 1)

... 또는 ...

l = Location.find_by_sql(:conditions => ["SELECT name, website, city FROM locations WHERE id = ? LIMIT 1", id])

이 참조 문서.find번호, ID 또는 기타 임의의 열 / 제약 조건으로 제한하는 방법을 포함하여 와 함께 사용할 수있는 전체 옵션 목록을 제공합니다 .

ActiveRecord 쿼리 인터페이스가있는 Rails 3에서

l = Location.where(["id = ?", id]).select("name, website, city").first

참조 : 액티브 레코드 쿼리 인터페이스

순서를 바꿀 수도 있습니다. .select(...).where(...).first호출이 이러한 수행하는 모든 작업은 SQL 쿼리를 구성한 다음 전송하는 것입니다.


pluck (열 _ 이름)

이 방법은 직접 SQL 쿼리로 단일 열에 의해 선택을 수행하도록 설계했습니다. 지정된 열 이름의 값이있는 배열을 반환합니다. 값은 열과 동일한 데이터 유형을 갖습니다.

예 :

Person.pluck(:id) # SELECT people.id FROM people
Person.uniq.pluck(:role) # SELECT DISTINCT role FROM people
Person.where(:confirmed => true).limit(5).pluck(:id)

참조 http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-pluck를

도입 된 레일 3.2부터는 단일 별장 만 수용합니다. 레일 4에서는 여러 열을 허용합니다.


나는 꽤 새로운 개발자이기 때문에 내 대답은 꽤 늦었습니다. 이것이 당신이 할 수있는 일입니다 :

Location.select(:name, :website, :city).find(row.id)

Btw, 이것은 Rails 4입니다.

참고 URL : https://stackoverflow.com/questions/7911014/activerecord-find-and-only-return-selected-columns

반응형